2013-03-07 8 views
1

мне нужно привязать к CheckBox ДВА собственности, и я думаю, что я должен использовать multiBindingsWPF CheckBox 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

Смежные вопросы