2016-08-29 4 views
1

私はWPFアプリケーションを開発しています。私は3つのコンボボックスを持っています。各コンボボックスにはソースとしてのリストがあり、各コンボボックスに1,2,3の3つの項目があります。 私もボタンがあります。ユーザーが少なくとも2つのコンボボックスで同じ値を選択した場合は、このボタンを無効にします。すなわち、 ユーザーが最初のCBで1を選択し、2番目のCBで1を選択した場合は、ボタンを無効にします。私はボタンの中で以下のコードを使ってこれを達成しようとしました。 しかし、とにかく動作しません。3つのコンボボックスの選択された項目値を使用してボタンを有効にした状態を制御する

<Button> 
.... 
<Style> 
    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Binding="{Binding ElementName=CB1, Path=SelectedItem}" Value="1" /> 
       <Condition Binding="{Binding ElementName=CB2, Path=SelectedItem}" Value="1" /> 
       <Condition Binding="{Binding ElementName=CB3, Path=SelectedItem}" Value="1" /> 
      </MultiDataTrigger.Conditions> 
      <Setter Property="IsEnabled" Value="False" /> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style> 
</Button> 

XAML自体でも同じことを行うとよいでしょうか?

+0

MVVMを使用していますか?その場合、RelayCommand [このような](http://www.mvvmlight.net/help/SL5/html/e5294f54-f460-8227-b228-ac63034b1294.htm)をボタンのコマンドにバインドすることができます。コマンドは、あなたのViewModelの状態に基づいて、ボタンをアクティブにする必要があるかどうかを判断することができます。 – 3615

+0

はいMVVMパターンに従っています。私はすでに 'RelayCommand'を使ってそのようなボタン状態を制御しています。私はXAML自体でそれを制御するいくつかのテクニックを探しています。 – ViVi

答えて

0

私はこれを達成するためにMultiValueConverterを使用します。

渡されたリスト内のすべての項目が一意である場合Convert方法はtrueを返します。 XAMLでは、次のようにコンバータを使用できます。

<Button Content="My Button"> 
    <Button.Resources> 
     <!-- You can move this Resource to another place without any problem --> 
     <local:IsDistinctConverter x:Key="IsDistinctConverter"/> 
    </Button.Resources> 
    <Button.IsEnabled> 
     <MultiBinding Converter="{StaticResource IsDistinctConverter}"> 
      <Binding Path="SelectedItem" ElementName="CB1"/> 
      <Binding Path="SelectedItem" ElementName="CB2"/> 
      <Binding Path="SelectedItem" ElementName="CB3"/> 
     </MultiBinding> 
    </Button.IsEnabled> 
</Button> 
+0

それを自体に含めることは可能ですか? – ViVi

+0

@Rennie 'Setter'の中の値として' MultiBinding'を設定しようとすることができます。これはうまくいくはずです。しかし、あなたはまだ 'ComboBox'sへの参照が必要です。だから私はなぜバインディングをスタイルに移す必要があるのか​​わかりません。 – Koopakiller

関連する問題