public class EnabledDisabledToBooleanConverter : IValueConverter
{
private const string EnabledText = "Enabled";
private const string DisabledText = "Disabled";
public static readonly EnabledDisabledToBooleanConverter Instance = new EnabledDisabledToBooleanConverter();
private EnabledDisabledToBooleanConverter()
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Equals(true, value)
? EnabledText
: DisabledText;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//Actually won't be used, but in case you need that
return Equals(value, EnabledText);
}
}
5条答案
按热度按时间yduiuuwa1#
你可以使用ValueConverter将布尔值转换为ComboBox索引,然后再转换回来。
假设索引0上的是Yes,索引1上的是No。那么你必须在绑定到SelectedIndex属性时使用该转换器。为此,你可以在参考资料部分声明你的转换器:
然后在绑定中使用它:
cmssoen22#
我发现自己在过去使用ComboBox项目的IsSelected属性来实现这一点。这个方法完全在xaml中。
fd3cxomn3#
第一个解决方案是用复选框替换你的“是/否”组合框,因为,好吧,复选框的存在是有原因的。
第二种解决方案是用true和false对象填充组合框,然后将组合框的'SelectedItem'绑定到布尔属性。
a5g8bdjr4#
下面是一个示例(将启用/禁用替换为是/否):
这里是转换器:
而且不需要玩指数。
isr3a4wc5#
您可以使用ComboBoxItem.Tag属性来实现以下操作:
与.NET 6配合良好(可能也适用于旧版本)。