簡體   English   中英

如何將IsEnabled屬性綁定到兩個值的OR?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM