使用DataTrigger比使用数据绑定更好吗?

3

如果我想在WPF中隐藏(或更改可见性、颜色等)一个元素,使用DataTrigger还是绑定和转换器更好?

听起来这两种方法都可以实现相同的目标。那么什么时候使用其中一种比另一种更好呢?

2个回答

8
我可以向您介绍我的经验。
我在以下情况下使用带有转换器的数据绑定:
1. 对于“Visibility”属性(WPF中有内置的转换器)。 2. 在Silverlight应用程序中(尽管Microsoft.Expression.Interactions库中有兼容Silverlight的数据触发器,但它们不如WPF触发器方便)。 3. 如果源对象包含许多可能的值。例如,将枚举转换为图像,编写5个if-else子句比编写5个datatrigger更容易。
数据触发器:
1. 如果我想同时更改几个不同的属性(背景、可见性、厚度)。 2. 对于画刷(使用颜色的十六进制数在C#代码中创建画刷并不容易)。 3. 如果我想应用静态资源。 4. 它们可用于显示动画和运行故事板。
有时我更喜欢MVVM方法:我在视图模型中创建所需类型的附加属性,以便可以直接绑定而无需转换。

我想补充一下,DataTriggers 可以启动 Storyboards。 - Jens
@Jens 是的,你说得对。虽然数据触发器中的动画并不常见。 - vortexwolf

0

简短的回答是,这取决于情况。

Data Triggers 只能对单个数据源提供等式操作。

如果您需要使用参数或多值绑定,则需要使用转换器。


但随之而来的问题是:数据触发器提供了什么数据绑定没有提供? - Vitalik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接