2

checkBox を TWO プロパティにバインドする必要があり、使用する必要があると思いますmultiBindings

これまでのところ私はこれを持っていますが、これは機能しません。

<CheckBox x:Name="FilterAll" Content="All">
 <CheckBox.IsChecked>
  <MultiBinding>
     <Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterAllEnable"
            Source="{StaticResource CompassLogView}">
     </Binding>

     <Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterVisible"
             Source="{StaticResource CoreServiceLogView}">
     </Binding>
  </MultiBinding>
 </CheckBox.IsChecked>
</CheckBox>

これは MultiBinding でも可能ですか?

4

2 に答える 2

6

マルチバインディングを使用できます。そして、ethicallogics が言ったように、コンバーターを使用してパラメーターの実際のロジックを実行する必要があります (AND、OR を実行するかどうかに関係なく)。ここでそれらについてもう少し詳しく説明します。

チェックボックスに何を変更しようとしているのかはわかりませんが、最終的には次のようになります。

<CheckBox.IsChecked>
   <MultiBinding Converter="{StaticResource MultiBoolConverter}">
        <Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterAllEnable" Source="{StaticResource CompassLogView}"/>
        <Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterVisible"
             Source="{StaticResource CoreServiceLogView}"/>
    </MultiBinding>
</CheckBox.IsChecked>

これを行う別の方法もありますが、これは時々役立つと思います。それは DataTriggers と呼ばれます。スタイルとテンプレートを使用したことがある場合は、それらを見たことがあるかもしれません。あなたの質問に基づいた例を次に示します。

<CheckBox>
  <CheckBox.Style>
     <Style TargetType={x:Type CheckBox}>
        <Style.Triggers>
          <MultiDataTrigger>
             <MultiDataTrigger.Conditions>
                  <Condition Binding="{Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterAllEnable" Source="{StaticResource CompassLogView}" Value="True"/>
                  <Condition Binding="{Binding Path="SearchEngineCompassLogView.FilterSearch.IsFilterVisible" Source="{StaticResource CoreServiceLogView}" Value="True"/>
              </MultiDataTrigger.Conditions>
              <Setter Property="CheckBox.IsChecked" Value="True"/>
          </MultiDataTrigger>
        </Style.Triggers>
     </Style>
  </CheckBox.Style>
</CheckBox>
于 2013-03-07T19:23:21.237 に答える
2

MultiBinding でコンバーターを指定する必要があります。マルチバインド

于 2013-03-07T18:55:48.433 に答える