具有多个组合框的MultiDataTrigger WPF



我只想在所有指定的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绑定。

当然,最后两个选项只有在您首先设置了具有绑定的适当视图模型的情况下才有效(如果您还没有设置绑定,我强烈建议您这样做(。

相关内容

  • 没有找到相关文章

最新更新