現在、コントロールのIsEnabledプロパティに2つの値の論理和をとる必要があるときに、私は不可視のコンテナコントロール(境界線を使用)を使用し、コントロールのIsEnabledとコンテナのIsEnabledを設定します。IsEnabledプロパティを2つの値のORにバインドする方法はありますか?
良いアプローチがありますか?そうでない場合は、これを行うための最も軽量なコントロールは何ですか?
ありがとうございます。
現在、コントロールのIsEnabledプロパティに2つの値の論理和をとる必要があるときに、私は不可視のコンテナコントロール(境界線を使用)を使用し、コントロールのIsEnabledとコンテナのIsEnabledを設定します。IsEnabledプロパティを2つの値のORにバインドする方法はありますか?
良いアプローチがありますか?そうでない場合は、これを行うための最も軽量なコントロールは何ですか?
ありがとうございます。
をIsEnabled
が結合を介して設定されている場合は、あなたがmulti-value converterと一緒に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.");
}
}
そして、これはあなたがそれを使用する方法である:
は正直なところ、私は簡単に自分の解決策を見つける:Dしかし、私はあなたが言うものを手に入れます。 –
は、渡された値ですまたはコンバータでMultiBinding
を使用することができます。
あなたはこのようにコンバータを使用することができますあなたはViewModelにに結合している場合は、集計プロパティを作成することができます
<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
訪問 http://stackoverflow.com/questions/945427/c-sharp-wpf-isenabled-using-multiple-bindings – GANI