我只希望在所有指定的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>我很感激你的帮助!
发布于 2021-04-28 21:40:36
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属性,该属性根据各种ComboBox控件的绑定SelectedValue属性进行设置。
另一种选择是使用MultiBinding将绑定到ComboBox.SelectedValue属性的五个视图模型属性与实现该逻辑的IMultiValueConverter绑定。
当然,这最后两个选项只有在您已经建立了一个正确的视图模型并在一开始就设置了绑定(如果您还没有这样做的话,我强烈建议这样做)时才能起作用。
https://stackoverflow.com/questions/67307958
复制相似问题