수색…
매개 변수
방법 | 기술 |
---|---|
ProvideValue | MarkupExtension 클래스에는 재정의되어야하는 메서드가 하나뿐이므로 XAML 파서는이 메서드에서 제공 한 값을 사용하여 태그 확장 결과를 평가합니다. |
비고
속성 사용, 속성 요소 사용의 속성 또는 둘 다에서 속성 값을 제공하도록 태그 확장을 구현할 수 있습니다.
특성 값을 제공하는 데 사용되는 경우 태그 확장 시퀀스를 XAML 프로세서와 구별하는 구문은 열기 및 닫기 중괄호 ({및})의 존재입니다. 그런 다음 마크 업 확장 유형이 여는 중괄호 바로 뒤에 오는 문자열 토큰으로 식별됩니다.
속성 요소 구문에 사용되는 경우 마크 업 확장은 속성 요소 값을 제공하는 데 사용되는 다른 요소와 시각적으로 동일합니다. 태그 확장 클래스를 요소로 참조하고 꺾쇠 괄호 (<>)로 묶은 XAML 요소 선언입니다.
자세한 내용은 https://msdn.microsoft.com/en-us/library/ms747254(v=vs.110).aspx를 참조하십시오.
IValueConverter와 함께 사용되는 마크 업 확장
마크 업 확장의 가장 좋은 용도 중 하나는 IValueConverter를보다 쉽게 사용할 수 있도록하는 것입니다. 아래의 예제에서 BoolToVisibilityConverter는 값 변환기이지만 인스턴스 독립적이므로 태그 확장을 사용하여 값 변환기의 일반 해시가 없으면 사용할 수 있습니다. XAML에서 그냥 사용하십시오.
Visibility="{Binding [BoolProperty], Converter={[xmlns]:BoolToVisibilityConverter}}"
항목 가시성을 bool 값으로 설정할 수 있습니다.
public class BoolToVisibilityConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is bool)
return (bool)value ? Visibility.Visible : Visibility.Collapsed;
else
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is Visibility)
{
if ((Visibility)value == Visibility.Visible)
return true;
else
return false;
}
else
return false;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
XAML 정의 마크 업 확장
XAML에는 미리 정의 된 네 가지 태그 확장이 있습니다.
x:Type
은 명명 된 유형의 Type 객체를 제공합니다. 이 기능은 스타일과 템플릿에서 가장 많이 사용됩니다.
<object property="{x:Type prefix:typeNameValue}" .../>
x:Static
은 정적 값을 생성합니다. 값은 대상 등록 정보의 값 유형이 아닌 값 유형 코드 엔티티에서 가져 오지만 해당 유형에 대해 평가할 수 있습니다.
<object property="{x:Static prefix:typeName.staticMemberName}" .../>
x:Null
은 속성 값으로 null을 지정하며 속성 또는 속성 요소 값으로 사용될 수 있습니다.
<object property="{x:Null}" .../>
x:Array
는 WPF 기본 요소 및 컨트롤 모델에서 제공하는 컬렉션 지원을 의도적으로 사용하지 않는 경우 XAML 구문의 일반 배열을 만들 수 있도록 지원합니다.
<x:Array Type="typeName">
arrayContents
</x:Array>