如何将IsEnabled属性绑定到两个值的OR
本文关键字:两个 OR IsEnabled 属性 绑定 | 更新日期: 2023-09-27 18:27:45
当前,当我必须对控件的IsEnabled属性进行两个值的"或"运算时,我将使用一个不可见的容器控件(我使用一个Border)并设置控件和容器中的一个的IsEnabled。
有更好的方法吗?如果没有,那么最轻量级的控制是什么?
提前谢谢。
如果通过绑定设置IsEnabled
,则可以将MultiBinding与多值转换器结合使用。
您可以使用这样的转换器:
public class BooleanOrConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
foreach (object value in values)
{
if ((value is bool) && (bool)value == true)
{
return true;
}
}
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException("BooleanOrConverter is a OneWay converter.");
}
}
这就是你使用它的方式:
<myConverters:BooleanOrConverter x:Key="BooleanOrConverter" />
...
<ComboBox Name="MyComboBox">
<ComboBox.IsEnabled>
<MultiBinding Converter="{StaticResource BooleanOrConverter}">
<Binding ElementName="SomeCheckBox" Path="IsChecked" />
<Binding ElementName="AnotherCheckbox" Path="IsChecked" />
</MultiBinding>
</ComboBox.IsEnabled>
</ComboBox>
可以将MultiBinding
与传入值的转换器一起使用。