수색…


매개 변수

매개 변수 세부
변환 할 값
targetType 변환 대상 유형
매개 변수 변환 작동 방식을 제어하는 ​​선택적 값
문화 CultureInfo 객체 - 필요한 현지화가 필요한 경우

비고

Convert 메서드는 소스 (일반적으로 뷰 모델)의 값을 대상 (일반적으로 컨트롤의 속성)으로 변환합니다.

ConvertBack 메서드는 대상의 값을 원본으로 다시 변환합니다. Y 인딩이 TwoWay 또는 OneWayToSource 경우에만 필요합니다.

ConvertBack 이 지원되지 않는 경우, 즉 변환 전 값과 변환 후 값 사이에 일대일 매핑이 없으면 ConvertBack 메서드에서 DependencyProperty.UnsetValue 반환하는 것이 일반적입니다. 그것은 예기치 않은 런타임 오류를 피하기 때문에 예외 (예 : NotImplementedException )를 던지는 것보다 더 나은 옵션입니다. 또한 DependencyProperty.UnsetValue 가 변환기에 의해 반환 될 때 바인딩은 FallbackValue 이점을 얻을 수 있습니다.

IsChecked 변환기의 문자열

XAML에서

<RadioButton IsChecked="{Binding EntityValue, Mode=TwoWay,
                         Converter={StaticResource StringToIsCheckedConverter},
                         ConverterParameter=Male}"
             Content="Male"/>

<RadioButton IsChecked="{Binding EntityValue, Mode=TwoWay,
                         Converter={StaticResource StringToIsCheckedConverter},
                         ConverterParameter=Female}"
             Content="Female"/>

C # 클래스 :

public class StringToIsCheckedConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string input = (string)value;
        string test = (string)parameter;
        return input == test;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || !(value is bool))
        {
            return string.Empty;
        }
        if (parameter == null || !(parameter is string))
        {
            return string.Empty;
        }
        if ((bool)value)
        {
            return parameter.ToString();
        }
        else
        {
            return string.Empty;
        }
    }
}

변환기 101

XAML 컨트롤에는 DataContext 또는 다른 컨트롤의 개체에 바인딩 할 수있는 종속성 속성이있을 수 있습니다. 바인딩되는 개체의 유형이 대상 DependencyProperty 의 유형과 다른 경우 변환기를 사용하여 한 유형을 다른 유형에 적용 할 수 있습니다.

변환기는 System.Windows.Data.IValueConverter 또는 System.Windows.Data.IMultiValueConverter 구현하는 클래스입니다. WPF는 기본적으로 일부 변환기를 구현하지만 개발자는 사용자 지정 구현에서 사용 방법을 볼 수 있습니다.

XAML에서 변환기를 사용하려면 Resources 섹션에서 인스턴스를 인스턴스화 할 수 있습니다. 아래 예제에서는 System.Windows.Controls.BooleanToVisibilityConverter 가 사용됩니다.

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</UserControl.Resources>

정의 된 x:Key 요소를 BooleanToVisibilityConverter 다음 바인딩의 BooleanToVisibilityConverter 인스턴스를 참조하는 데 사용됩니다.

<TextBlock Text="This will be hidden if property 'IsVisible' is true"
           Visibility="{Binding IsVisible, 
                                Converter={StaticResource BooleanToVisibilityConverter}}"/>

위의 예제에서 부울 IsVisible 속성은 System.Windows.Visibility 열거 형의 값으로 변환됩니다. Visibility.Visible true이면 true이고 그렇지 않으면 Visibility.Collapsed 입니다.

변환기 만들기 및 사용 : BooleanToVisibilityConverter 및 InvertibleBooleanToVisibilityConverter

바인딩 경험을 확장하고 확장하기 위해 하나의 유형 값을 다른 유형의 다른 값으로 변환하는 변환기가 있습니다. 데이터 바인딩에서 변환기를 활용하려면 먼저 DataConverter 클래스를 만들어야합니다.

  • IValueConverter (WPF 및 UWP)

또는

  • IMultiValueConverter (WPF)

여러 유형을 하나의 유형으로 변환하려는 경우
이 경우 boolean True/False 값을 해당 Visibilities Visibility.VisibleVisibility.Collapsed 로 변환하는 데 초점을 맞 춥니 다.

public class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool) value) ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return (value is Visibility && (Visibility) value == Visibility.Visible);
    }
}

Convert 당신이 할 때마다 메소드가 불려 GET 데이터 FROM ViewModel .
ConvertBack 시이라고 SET 데이터를 보내고 TO ViewModel 위한 BindingMode.TwoWay 바인딩.

물론 변환기 내에서 속성을 활용할 수도 있습니다. 이것 좀보세요 :

public class InvertibleBooleanToVisibilityConverter : IValueConverter
{
    public bool Invert { get; set; } = false;

    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool) value != Invert) ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return (value is Visibility && ((Visibility) value == Visibility.Visible) != Invert);
    }
}

Binding 에서 변환기를 사용하려면 페이지, 창 또는 기타 요소에서 리소스로 선언하고 키를 지정하고 잠재적으로 필요한 속성을 제공하십시오.

<Page ...
    xmlns:converters="using:MyNamespce.Converters">
<Page.Resources>
    <converters:InvertibleBooleanToVisibilityConverter 
        x:Key="BooleanToVisibilityConverter" 
        Invert="False" />
</Page.Resources>

바인딩에서 StaticResource 로 사용합니다.

<ProgressRing 
        Visibility="{Binding ShowBusyIndicator, 
            Converter={StaticResource BooleanToVisibilityConverter},
            UpdateSourceTrigger=PropertyChanged,
            Mode=OneWay}" />


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow