【问题标题】:WPF CheckBox multiBindingWPF CheckBox 多重绑定
【发布时间】:2013-03-07 18:53:42
【问题描述】:

我需要将一个复选框绑定到两个属性,我认为我必须使用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 也能做到这一点吗?

【问题讨论】:

    标签: c# wpf data-binding


    【解决方案1】:

    您可以使用 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>
    

    还有另一种方法可以做到这一点,我有时觉得这很有用。它被称为数据触发器。如果您使用过样式和模板,那么您可能以前见过它们。这是基于您的问题的示例:

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

    【讨论】:

      【解决方案2】:

      您必须在 MultiBinding 中指定转换器。Multibinding

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 2013-04-12
        • 2016-04-26
        • 2013-04-04
        • 2014-06-03
        相关资源
        最近更新 更多