1

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

我将不胜感激任何帮助!

4

1 回答 1

1

MultiDataTrigger需要满足所有条件才能生效。即它相当于一个逻辑与。

在您的示例中,如果任何值不为空,则触发器将不会生效,并且按钮将保持启用状态。

对于逻辑 OR,而不是使用MultiDataTrigger,只需使用多个DataTrigger. 如果任何触发器的任何条件为真,则该触发器将生效,优先于样式中属性的默认设置器。

例如:

<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属性,并根据SelectedValue各种ComboBox控件的绑定属性进行设置。

另一种替代方法是使用实​​现逻辑的 aMultiBinding来绑定绑定到属性的五个视图模型属性。ComboBox.SelectedValueIMultiValueConverter

当然,这最后两个选项只有在您拥有一个适当的视图模型并首先设置绑定时才有效(如果您还没有的话,我强烈建议您这样做)。

于 2021-04-28T21:40:36.733 回答