【问题标题】:WPF triggers VS ConverterWPF 触发 VS 转换器
【发布时间】:2013-10-28 06:46:53
【问题描述】:

在性能方面哪个更好? 与触发器相比,转换器的限制,反之亦然。 我应该限制转换器的使用,因为它会导致班级爆炸吗?

【问题讨论】:

    标签: wpf c#-4.0 triggers converter


    【解决方案1】:

    如果您从事 TDD 开发,最好选择转换器。

    如果没有要应用的复杂业务逻辑或自定义逻辑,则选择触发器。关于转换器的另一件事是,根据 Laurent Bugnion(MVVM Light 的创建者)的说法,使用转换器会降低性能。

    您可以从这篇文章中看到更多关于性能影响的见解。 DataTrigger vs databinding with converter performance wise

    您还可以从这篇文章中获得有关何时使用触发器以及何时使用转换器的更多详细信息。 Should I use WPF converter or trigger?

    可以根据您正在遵循或将要遵循的开发方法做出决定。大多数时候,我更喜欢将您的视图模型包装在“WPF Viewmodel”概念中。

    【讨论】:

      【解决方案2】:

      对于类似类型的输出,与Converter 相比,Triggers 的性能更好。 虽然,conveters 在您希望开发为 TDD 的地方是可取的,因为您可以为转换器代码编写单元测试。 Converters 可用于编写有时使用触发器无法实现的复杂转换。 对于复杂的转换Converters可以减少代码而不是写一系列Triggers

      【讨论】:

      • 您的回答很好,但请添加诸如复杂转换之类的示例。它有帮助。
      【解决方案3】:

      在大多数情况下,触发器可以执行与任何转换器相同的工作,但转换器可以具有自定义/业务逻辑。

      触发器的一个限制是 DataTriggers 中的 Setter 只能更改 UI 元素的属性;所以,你不能用触发器更新你的 ViewModels 属性,这就是转换器获胜的地方,记住 ConvertBack 方法。

      简而言之,Triggers 只能执行 OneWay 操作,而 Converters 可以执行 TwoWay 操作

      【讨论】:

      猜你喜欢
      • 2014-05-31
      • 1970-01-01
      • 2012-06-24
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 2013-07-16
      相关资源
      最近更新 更多