खोज…


पैरामीटर

पैरामीटर विवरण
मूल्य से परिवर्तित करने का मान
TargetType में परिवर्तित किया जा रहा प्रकार
पैरामीटर रूपांतरण कैसे काम करता है इसे नियंत्रित करने के लिए वैकल्पिक मूल्य
संस्कृति संस्कृतिइन्फो ऑब्जेक्ट - स्थानीयकरण की आवश्यकता होने पर आवश्यक

टिप्पणियों

Convert विधि स्रोत से मान (आमतौर पर दृश्य मॉडल) को लक्ष्य (आमतौर पर नियंत्रण की संपत्ति) में परिवर्तित करती है।

ConvertBack विधि मान को लक्ष्य से स्रोत में परिवर्तित करती है। यह केवल तभी बाध्यकारी है की जरूरत है TwoWay या OneWayToSource

जब कोई ConvertBack समर्थित नहीं है, अर्थात पूर्व-रूपांतरण मान और रूपांतरण-बाद के मूल्य के बीच कोई एक-से-एक मैपिंग नहीं है, तो ConvertBack विधि को DependencyProperty.UnsetValue ConvertBack जाना आम बात है। यह एक अपवाद को फेंकने से बेहतर विकल्प है (जैसे NotImplementedException ) क्योंकि यह अनपेक्षित रनटाइम त्रुटियों से बचा जाता है। इसके अलावा, बाइंडिंग अपने FallbackValue का लाभ उठा सकती है जब 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"/>

सी # वर्ग:

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 लागू System.Windows.Data.IValueConverter कक्षाएं हैं; WPF बॉक्स कन्वर्टर्स में से कुछ को लागू करता है, लेकिन डेवलपर्स कस्टम कार्यान्वयन में उपयोग देख सकते हैं, जैसा कि अक्सर होता है।

XAML में एक कनवर्टर का उपयोग करने के लिए, Resources अनुभाग में एक उदाहरण को तत्काल किया जा सकता है। नीचे दिए गए उदाहरण के लिए, System.Windows.Controls.BooleanToVisibilityConverter का उपयोग किया जाएगा:

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

x:Key नोटिस करें x:Key तत्व परिभाषित किया गया है, जो तब बाइंडिंग में BooleanToVisibilityConverter के उदाहरण को संदर्भित करने के लिए उपयोग किया जाता है:

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

उपरोक्त उदाहरण में, एक बूलियन IsVisible संपत्ति के एक मूल्य में बदल जाती है System.Windows.Visibility गणन; Visibility.Visible यदि सत्य है, या Visibility.Collapsed । अन्यथा Visibility.Collapsed हो गई है।

एक कन्वर्टर बनाना और उपयोग करना: बूलियनट्विसिबिलिटी कंवर्टर और इनवर्टिबल बूलियनटिसिबिलिटी कंवर्टर

बाध्यकारी अनुभव पर विस्तार और विस्तार करने के लिए हमारे पास एक प्रकार के एक मूल्य को दूसरे प्रकार के दूसरे मूल्य में बदलने के लिए कन्वर्टर्स हैं। एक डेटाबाइंडिंग में कन्वर्टर्स का लाभ उठाने के लिए आपको पहले एक DataConverter क्लास बनाने की आवश्यकता होती है

  • IValueConverter (WPF और UWP)

या

  • IMultiValueConverter (WPF)

यदि आप कई प्रकारों को एक प्रकार में बदलना चाहते हैं
इस मामले में हम एक दृश्यता Visibility.Visible लिए एक boolean True/False मान परिवर्तित करने पर ध्यान केंद्रित करते हैं। अदृश्य और Visibility.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);
    }
}

जब भी आप ViewModel FROM डेटा GET करते हैं तो Convert विधि को कहा जाता है।
ConvertBack आह्वान किया जाता है SET डेटा ing 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