यह एक समाधान का उपयोग कर एक Converter
और ConverterParameter
जिसे आप आसानी से अलग Bindings
के लिए अलग strings
परिभाषित करने के लिए अनुमति देता है:
public class BoolToStringConverter : IValueConverter
{
public char Separator { get; set; } = ';';
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
var strings = ((string)parameter).Split(Separator);
var trueString = strings[0];
var falseString = strings[1];
var boolValue = (bool)value;
if (boolValue == true)
{
return trueString;
}
else
{
return falseString;
}
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
var strings = ((string)parameter).Split(Separator);
var trueString = strings[0];
var falseString = strings[1];
var stringValue = (string)value;
if (stringValue == trueString)
{
return true;
}
else
{
return false;
}
}
}
सी परिभाषित करें onverter इस तरह:
<local:BoolToStringConverter x:Key="BoolToStringConverter" />
और यह इस तरह का उपयोग करें:
<TextBlock Text="{Binding MyBoolValue, Converter={StaticResource BoolToStringConverter},
ConverterParameter='Yes;No'}" />
आप ;
तुलना में एक अलग विभाजक की जरूरत है (उदाहरण के .
के लिए), कनवर्टर इस के बजाय तरह परिभाषित करते हैं:
<local:BoolToStringConverter x:Key="BoolToStringConverter" Separator="." />
स्रोत
2016-09-30 07:35:55
आप सही हैं, यह एक बूल मान के लिए मान्य प्रारूप स्ट्रिंग नहीं है (यह संख्यात्मक मानों के लिए मान्य है)। मैं इस तरह की प्रारूप स्ट्रिंग का परीक्षण कर रहा था: string.Format ("{0: Yes ;; No}", 1), जो "हां" देता है, लेकिन स्ट्रिंग। फोर्मेट ("{0: हाँ ;; नहीं}", सत्य) "सच" देता है। धन्यवाद –
क्या आप कृपया सुझाव दे सकते हैं, मैं इस कनवर्टर का उपयोग कर बाध्यकारी करते समय ElementName का उपयोग कैसे करूं? –
@conqenator, बस एक सामान्य बाध्यकारी –