Ray*_*rof 2 c# data-binding wpf
我需要将一个复选框绑定到两个属性,我认为我必须使用 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>
Run Code Online (Sandbox Code Playgroud)
MultiBinding甚至可以做到吗?
您可以使用MultiBinding。正如伦理学家所说,您必须使用转换器来执行参数的实际逻辑(无论您要执行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>
Run Code Online (Sandbox Code Playgroud)
还有另一种方法也可以做到这一点,我有时发现这很有用。它称为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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5898 次 |
| 最近记录: |