我只想在所有指定的ComboBoxes
都有值时启用按钮。然而,一旦我添加了第二个条件,按钮就会从启动启用
这是我的代码
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=SensorPartNumberComboBox, Path=SelectedValue}" Value="{x:Null}"/>
<Condition Binding="{Binding ElementName=SensorTypeComboBox, Path=SelectedValue}" Value="{x:Null}"/>
<Condition Binding="{Binding ElementName=SensorBrandNameComboBox, Path=SelectedValue}" Value="{x:Null}"/>
<Condition Binding="{Binding ElementName=DimmingProtocolComboBox, Path=SelectedValue}" Value="{x:Null}"/>
<Condition Binding="{Binding ElementName=Wired_WirelessComboBox, Path=SelectedValue}" Value="{x:Null}"/>
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="False"/>
</MultiDataTrigger>
</Style.Triggers>
如果有任何帮助,我将不胜感激!
MultiDataTrigger
要求所有条件都为true才能生效。也就是说,它相当于一个逻辑AND。
在您的示例中,如果任何值都不是null,则触发器将不会生效,按钮将保持启用状态。
对于逻辑OR,不使用MultiDataTrigger
,而只使用多个DataTrigger
。如果任何触发器的任何条件为true,则该触发器将生效,其优先级高于样式中属性的默认setter。
例如:
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=SensorPartNumberComboBox, Path=SelectedValue}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
<DataTrigger/>
<DataTrigger Binding="{Binding ElementName=SensorTypeComboBox, Path=SelectedValue}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
<DataTrigger/>
<DataTrigger Binding="{Binding ElementName=SensorBrandNameComboBox, Path=SelectedValue}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
<DataTrigger/>
<DataTrigger Binding="{Binding ElementName=DimmingProtocolComboBox, Path=SelectedValue}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
<DataTrigger/>
<DataTrigger Binding="{Binding ElementName=Wired_WirelessComboBox, Path=SelectedValue}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
<DataTrigger/>
</Style.Triggers>
或者,您可以考虑将逻辑放在视图模型中,使用绑定到的单个bool
属性,该属性是根据各种ComboBox
控件的绑定SelectedValue
属性设置的。
另一种选择是使用MultiBinding
将绑定到ComboBox.SelectedValue
属性的五个视图模型属性与实现该逻辑的IMultiValueConverter
绑定。
当然,最后两个选项只有在您首先设置了具有绑定的适当视图模型的情况下才有效(如果您还没有设置绑定,我强烈建议您这样做(。