if((a&&(b||c||d)) || (e&&(f||g||h)))
然后设置按钮 Isenabled 属性为 true
我想为在 WPF 中使用样式触发器的按钮实现此功能。
提前致谢。
if((a&&(b||c||d)) || (e&&(f||g||h)))
然后设置按钮 Isenabled 属性为 true
我想为在 WPF 中使用样式触发器的按钮实现此功能。
提前致谢。
最简单的方法是使用 Mutlivalueconverter 将所有这些绑定到样式中的 IsEnable 属性,并将此逻辑放入转换器的 Convert 方法中:
<Style TargetType={x:Type Button}>
<Setter Property="IsEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="a"/>
<Binding Path="b"/>
<Binding Path="c"/>
<Binding Path="d"/>
<Binding Path="e"/>
<Binding Path="f"/>
<Binding Path="g"/>
<Binding Path="h"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
这里的 MyConverter 是 Multivalueconverter。
谢谢
没有|| 在 MultiDataTrigger 中。您必须改用多个触发器。取你的表达式并提取所有没有 || 的子表达式 何时启用按钮:
现在为他们每个人在你的 Style 中构建一个 MultiDataTrigger,它将按钮的 Enabled 属性设置为 true。而已。
正如其他人所提到的,WPF 中没有对任意布尔表达式的内置支持。
但是,如果您愿意添加第三方软件,PyBinding允许您在 WPF 绑定中使用 Python 表达式:
<Button IsEnabled="{p:PyBinding $[.a] and ($[.b] or $[.c] or $[.d]) ... }"/>