gpt4 book ai didi

mvvm - MVVM View 模型的结构设计模式?

转载 作者:行者123 更新时间:2023-12-03 10:15:27 27 4
gpt4 key购买 nike

是否有任何推荐的 MVVM View 模型结构设计模式允许将不同的状态和功能动态添加到基础对象,但仍然在所有相关属性上维护 INotifyPropertyChanged?类似于装饰器模式但 mvvm-ready 的东西?

最佳答案

是的。 WPF 绑定(bind)系统将使用 custom type descriptor在运行时与 ViewModel 的属性进行交互。我以前使用它来使 KeyValueCollection 中的键显示为集合上的属性。

这有两个重要的好处。 它简化了绑定(bind):
DataContext.SomeCollectionProperty[SomeKey]可以简化为 DataContext.SomeCollectionProperty.SomeKey并且,如果您为数据上下文创建自定义类型描述符, DataContext.SomeKey这很简单。

它修复了我认为的错误 --format 字符串即使在属性为空时也会呈现。使用 CTD,您可以跳过 null(和 DBNull)属性,确保在属性不存在时不会呈现格式字符串:

想象一下,你有一个 double?您必须以美元金额呈现。如果您使用以下绑定(bind): {Binding Price, FormatString='Price: {0:c}'}并且价格为空,您会在 UI 中看到以下内容: Price: $ .这很丑陋。但是,如果 Price是 UI 上基于 PropertyDescriptor 的属性,当 Price 为 null 时,您可以选择不通过 CTD 报告此属性。这可以防止格式字符串被渲染。

这是 MSDN 上关于 decorating your types with a CTD 的一个很好的链接.

关于mvvm - MVVM View 模型的结构设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com