2013-03-07 4 views
1

나는 두 속성에 체크 박스를 바인드해야하고 난 내가WPF 체크 박스 multiBinding

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을 사용할 수 있습니까?

답변

2

멀티 바인딩을 사용할 수 있습니다. 그리고 ethicallogics가 말했듯이, 매개 변수의 실제 논리를 수행하기 위해 변환기를 사용해야합니다 (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를 불렀다. 당신이 만약 ' Styles and Templates로 작업 한 적이 있다면 이전에 본 적이있을 것입니다. 질문에 대한 예는 다음과 같습니다.

<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