if((a&&(b || c || d))||(e&&(f || g || h)))
然后设置按钮Isenabled属性为真
我想在WPF中使用样式触发器中的按钮实现此功能。
提前致谢。
答案 0 :(得分:1)
最简单的方法是将所有这些使用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是多值转换器。
由于
答案 1 :(得分:1)
没有||在MultiDataTrigger中。您必须使用多个触发器。在不使用||的情况下获取表达式并提取所有子表达式当按钮启用时:
现在,他们每个人都在你的Style中构建一个MultiDataTrigger,它将按钮的Enabled属性设置为true。就是这样。
答案 2 :(得分:0)
正如其他人所提到的,WPF中没有对任意布尔表达式的内置支持。
但是,如果您愿意添加第三方软件,PyBinding允许您在WPF绑定中使用Python表达式:
<Button IsEnabled="{p:PyBinding $[.a] and ($[.b] or $[.c] or $[.d]) ... }"/>