【问题标题】:How to use MultiDataTrigger to check a single condition to be true in Style.Triggers in WPF?如何使用 MultiDataTrigger 在 WPF 中的 Style.Triggers 中检查单个条件是否为真?
【发布时间】:2011-01-11 15:46:29
【问题描述】:
我的 UserControl 中有三个网格,其中一个控件一次显示。在最后一列中,我需要使用 Style 来检查数据并应用 ForeGround 颜色。我可以使用DataTriggers 在 3 个网格中的每个控件上编写样式。但我想要一个可以在任何地方使用的 Resource 中的具体样式。我尝试了MultiDataTrigger,但它不符合我的目的,因为它在MultiDataTrigger.Conditions 中检查2 个或更多条件是否为真,而我需要检查单个控件中的数据。是否有任何替代解决方案可以实现这一目标?
【问题讨论】:
标签:
wpf
datatrigger
multitrigger
multidatatrigger
【解决方案1】:
如果您使用某种网格,您可能正在使用 CellTemplate 或其他类似的属性来完成您的任务。我认为您确实需要在不同的列中使用不同的样式。
但是如果除了触发器之外这些样式都相同,那么您可以使用它们共同的所有样式创建一种样式,然后基于第一个样式创建另一种样式。这有点类似于 OOP 中的继承。
这可能是这样的:
<Style x:Key="BaseStyle" TargetType=".....">
<!-- Common setters and triggers -->
<Setter ... />
<Setter ... />
<Setter ... />
</Style>
<Style x:Key="InheritedStyle" BasedOn="{StaticResource BaseStyle}" TargetType=".....">
<!-- This style's specific setters and triggers -->
<Setter ... />
<Style.Triggers>
...
<Style.Triggers>
</Style>