首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM视图模型的结构化设计模式

MVVM视图模型的结构化设计模式
EN

Stack Overflow用户
提问于 2011-03-21 03:46:26
回答 2查看 704关注 0票数 2

有没有推荐的MVVM视图模型的结构设计模式,允许动态地将不同的状态和功能添加到基础对象中,同时仍然保持所有相关属性的INotifyPropertyChanged?有点像装饰器模式,但准备好mvvm了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-21 04:04:28

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

这有两个重要的好处。它简化了绑定:

DataContext.SomeCollectionProperty[SomeKey]可以简化为DataContext.SomeCollectionProperty.SomeKey,如果为数据上下文创建自定义类型描述符,则可以简化为DataContext.SomeKey

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

假设您有一个double?,您必须将其呈现为美元金额。如果您使用以下绑定:{Binding Price, FormatString='Price: {0:c}'}并且价格为空,则在您的UI中将获得以下内容:Price: $。这太难看了。但是,如果Price在您的UI上是一个基于PropertyDescriptor的属性,当价格为空时,您可以选择不通过CTD报告此属性。这完全阻止了格式字符串的呈现。

在MSDN上有一个关于decorating your types with a CTD的很好的链接。

票数 2
EN

Stack Overflow用户

发布于 2011-03-21 18:01:08

根据我的实验,您可以使用.NET 4中的ExpandoObject来处理您想要的东西。ExpandoObject实现了INPC。我一直在基于ExpandoObject创建一个DynamicViewModel,它可以做一些其他的事情,比如计算属性,它们彼此之间有依赖关系,以及委托命令注册。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5371032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档