使用DataTrigger而不是数据绑定更好吗?

Vit*_*lik 2 wpf binding

如果我想隐藏(或改变WPF中元素的可见性,颜色等),那么使用DataTrigger或绑定转换器会更好吗?

听起来像是实现同一目标的两种方式.用户何时更好?

vor*_*olf 7

我可以告诉你我的经历.

我在以下情况下使用带转换器的数据绑定:

  1. 对于Visibility属性(WPF中有内置转换器).
  2. 在Silverlight应用程序中(尽管库中存在与silverlight兼容的数据触发器Microsoft.Expression.Interactions,但它们不如WPF触发器那么方便).
  3. 如果源对象包含许多可能的值.例如,枚举到图像转换器,比5个数据触发器更容易编写5个if-else子句.

Datatriggers:

  1. 如果我想一次更改几个不同的属性(背景,可见性,厚度).
  2. 对于画笔(使用颜色的十六进制数字在C#代码中创建画笔并不容易).
  3. 如果我想应用静态资源.
  4. 它们可用于显示动画和运行故事板.

有时候我更喜欢MVVM方法:我在viewmodel中创建了必要类型的附加属性,这样它们就可以直接绑定而不需要转换.