[英]How to bind the IsEnabled property to an OR of two values?
當前,當我必須對控件的IsEnabled屬性進行兩個值的或運算時,我將使用不可見的容器控件(我使用邊框)並設置控件的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
與傳入值的轉換器一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.