Это решение с использованием Converter
и ConverterParameter
, которое позволяет вам легко определять разные strings
для разных Bindings
:
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;
}
}
}
Определите конвертер так:
<local:BoolToStringConverter x:Key="BoolToStringConverter" />
И используйте это так:
<TextBlock Text="{Binding MyBoolValue, Converter={StaticResource BoolToStringConverter},
ConverterParameter='Yes;No'}" />
Если вам нужен разделитель, отличный от ;
(например, .
), определите конвертер следующим образом:
<local:BoolToStringConverter x:Key="BoolToStringConverter" Separator="." />