Mvvm 在虚拟机中删除代理属性?

Mvvm 在虚拟机中删除代理属性?,mvvm,viewmodel,Mvvm,Viewmodel,我现在正在学习MVVM,我了解的东西很少,但很少有人在这里 是否每个可能通过VM暴露给视图的模型都有VM? 例如,如果我有一个联系人和地址实体,并且每个联系人都有一个Addresses many属性,这是否意味着我必须创建一个ContactViewModel和一个AddressViewModel等。? 我是否必须在ViewModel中重新声明模型的所有属性,即FirstName、LastName等等?为什么不使用ViewModelBase,而ContactViewMode将是ViewModelB

我现在正在学习MVVM,我了解的东西很少,但很少有人在这里

是否每个可能通过VM暴露给视图的模型都有VM? 例如,如果我有一个联系人和地址实体,并且每个联系人都有一个Addresses many属性,这是否意味着我必须创建一个ContactViewModel和一个AddressViewModel等。? 我是否必须在ViewModel中重新声明模型的所有属性,即FirstName、LastName等等?为什么不使用ViewModelBase,而ContactViewMode将是ViewModelBase的一个子类,可以访问实体的属性本身?如果这是一个坏主意,视图可以访问实体,请解释为什么,然后为什么不让ViewModelBase成为字典示例@链接页面的视图,这样我就不必在两层M&VM中反复声明所有属性和验证-因为真的,无论如何,视图都会通过反射访问ViewModel的字段。 我认为MVVM是我所学过的最难的技术。它没有现成的支持,有很多框架和方法可以实现它,另一方面也没有现成的学习方法,例如,学习MVVM意味着浏览和浏览,试图找出更好的方法。总之,我这一节的意思是,MSFT在BCL中添加MVVM支持,并根据Ms为VM和Vs添加生成器。
谢谢你,我喜欢大多数编程问题。。。这要看情况而定

这取决于你是如何把这些想法联系在一起的。如果视图模型符合您的需要,您可以在视图模型中重新公开所需的模型属性。隐藏不希望用户与之交互的模型比例,如DB键。您可以将模型验证逻辑放入模型或视图模型中。这完全取决于什么对你和你的处境有效,这就是为什么很难直接回答这个问题

我使用ViewModelBase实现所有ViewModels共享的功能。我一直在使用基本对象来处理INotifyPropertyChanged代码和其他一些

3看一看。Karl有一大堆代码,你可以看看。Stuff和BBQ Shack正在进行MVVM项目。他还有一个完整的MVVM培训模块


我会发布一些链接,但每个帖子只能有2个链接。

1/2就像大多数编程问题一样。。。这要看情况而定

这取决于你是如何把这些想法联系在一起的。如果视图模型符合您的需要,您可以在视图模型中重新公开所需的模型属性。隐藏不希望用户与之交互的模型比例,如DB键。您可以将模型验证逻辑放入模型或视图模型中。这完全取决于什么对你和你的处境有效,这就是为什么很难直接回答这个问题

我使用ViewModelBase实现所有ViewModels共享的功能。我一直在使用基本对象来处理INotifyPropertyChanged代码和其他一些

3看一看。Karl有一大堆代码,你可以看看。Stuff和BBQ Shack正在进行MVVM项目。他还有一个完整的MVVM培训模块

我会发布一些链接,但每个帖子只能有2个链接。

多么有心灵感应啊! 我很喜欢读罗伯特·麦卡特尔的一篇伟大的文章,他只说了我感到痛苦的事情!特别是关于代理属性,现在我甚至知道它的名字了

我会热情地向每一个像我一样的MVVM推荐这篇文章——我相信有很多

多么有心灵感应啊! 我很喜欢读罗伯特·麦卡特尔的一篇伟大的文章,他只说了我感到痛苦的事情!特别是关于代理属性,现在我甚至知道它的名字了


我会热情地向每一个像我一样的MVVM推荐这篇文章——我相信有很多

谢谢你的1/2部分。关于验证,我已将数据注释属性应用于模型中的所有属性,现在我是否必须全部重写它们???MVVM是如何实现的?这里有一些我之前无法发布的链接@digitalMoto,你不是发了一篇很棒的文章吗?谢谢你,我今天读了,非常喜欢。根据代码,它是带有属性的简单实体类。我不知道如何将验证转移到ViewModel层。试试这个@digitalMoto,阅读我的答案,是否有任何可接受的解决方案,这样我就不必使用代理属性并在我的所有VM中声明它们?感谢1/2部分。关于验证,我已将数据注释属性应用于模型中的所有属性,现在我是否必须全部重写它们???MVVM是如何实现的?这里有一些我之前无法发布的链接@digitalMoto,你不是发了一篇很棒的文章吗?谢谢你,我今天读了,非常喜欢。根据代码,它是带有属性的简单实体类。我不知道如何将验证传递到ViewModel层。请尝试此@d 阅读我的答案,是否有任何可接受的解决方案,使我不必使用代理属性并在所有虚拟机中声明它们?