当我必须在控件的IsEnabled属性上创建两个值的OR时,我使用不可见的容器控件(我使用边框)并设置控件的IsEnabled和容器的一个。如何将IsEnabled属性绑定到两个值的OR?
有没有更好的方法?如果没有,那么做这件事最轻量级的控制是什么?
在此先感谢。
当我必须在控件的IsEnabled属性上创建两个值的OR时,我使用不可见的容器控件(我使用边框)并设置控件的IsEnabled和容器的一个。如何将IsEnabled属性绑定到两个值的OR?
有没有更好的方法?如果没有,那么做这件事最轻量级的控制是什么?
在此先感谢。
如果IsEnabled
设置为通过绑定,您可以结合使用MultiBinding有multi-value converter。
老实说,我更容易找到自己的解决方案:d,但我得到你说什么。 – 2012-03-14 21:03:51
可以使用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>
如果你绑定到视图模型,你可以创建一个聚合性,改为绑定。 – dlev 2012-03-14 21:06:26
访问 http://stackoverflow.com/questions/945427/c-sharp-wpf-isenabled-using-multiple-bindings – GANI 2012-03-14 21:08:13