twe*_*ypi 2 c# mvvm windows-phone-8
看看这个例子:https://msdn.microsoft.com/en-us/library/windows/apps/gg521153%28v=vs.105%29.aspx?f=255&MSPPError=-2147217396
看起来ViewModel包含一组Models,它们被设置为视图的datacontext.
在MVVM中,ViewModel不应该是视图的datacontext,Model会修改ViewModel,然后会影响View吗?
TL; DR - 这个例子根本不是MVVM.
是的,它是MVVM的一个不好的例子.视图在运行时绑定到查询"viewmodel"中的属性而不是绑定到viewmodel本身的LINQ结果.在Accomplishments不使用其他任何地方.
换句话说,在 OP指向的示例中,视图根本不绑定到视图模型,而是错误地直接绑定到模型集合.  我不相信一个ObservableCollection<>构成合理的ViewModel.(或IEnumerable<>; IList<>或类似的)
这是视图代码隐藏中的违规行:
LevelViewOnPage.DataContext = from Accomplishment in vm.Accomplishments 
                              where Accomplishment.Type == "Level" 
                              select Accomplishment;
通常,您将视图绑定DataContext到viewmodel.
代码审查方面,它实际上非常可怕,有一些奇怪的设计和命名约定.
该视图通过以下方式调用视图模型:
vm.GetAccomplishments();
...因为它是一个没有"得到"的东西void.Accomplishments如果您的订单错误,该方法会填写您必须阅读的属性,因此太糟糕了.
| 归档时间: | 
 | 
| 查看次数: | 53 次 | 
| 最近记录: |