2013-03-07 90 views
1

我需要一个复选框结合两个属性,我认为我必须使用multiBindingsWPF复选框multiBinding

到目前为止,我有这个,但是这是行不通的。

<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?

回答

2

您可以使用MultiBinding。正如道德逻辑所说的,你必须使用一个转换器来完成参数的实际逻辑(无论你想要做AND还是OR,你可以看到更多关于这些的信息)here

我不确定你尝试在你的复选框影响,但最终它会是这个样子。

<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> 
+0

优秀答案... Thx – RayOldProf 2013-03-07 19:31:39