ISENABLEDプロパティをANまたは2つの値にバインドする方法は?
質問
現在、対照IのISENABLEDプロパティで2つの値を、目に見えないコンテナコントロール(ボーダーを使用)を使用し、コントロールのISENABLABLEDを設定してコンテナの1つと設定しなければならない場合。
より良いアプローチはありますか?そうでなければ、これを行うための最も軽量なコントロールは何ですか?
事前にありがとうございました。
解決
IsEnabled
がバインディングで設定されている場合は、を使用できます。マルチビンディング 多値コンバータ
他のヒント
このようなコンバーターを使うことができます:
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
渡された値が渡された変換器。
所属していません StackOverflow