在最后几天,我研究了MVVM,我下载了几个样本。
以下文章非常好,其中包括源代码:
更好的用户和开发人员体验 - 从Windows窗体到带MVVM的WPF
http://reedcopsey.com/series/windows-forms-to-mvvm/
当我第一次在Visual Studio 2013中打开项目时,所有字段和列表都是空的,就像预期的那样。该程序是一个RSS阅读器,我加载了一个包含大量源项的源,这些源填充了表单中的所有字段。但现在即使我停止了程序,我也能看到设计中的所有数据。
这显然非常好,因为它使得更容易看到并可能修改设计 我认为我所看到的内容被称为Blendability - 但我不确定这一点。
现在我的问题:这个Blendability来自哪里?我查看了项目的源代码,但在设计模式下我找不到数据的来源。
在过去的几天里,我在Visual Studio中安装了几个扩展,也许我安装了导致此行为的东西。或者这可能是本例中的一些特殊功能(文章中未提及)。
如果可能的话,请告诉我这个Blendability的来源以及如何在我自己的项目中实现它。
答案 0 :(得分:1)
设计时有一个很好的功能,如果你要将DataContext
设置为一个类,那么该类实际上将在设计时实例化。
这个特定窗口的DataContext
很可能是一个带有执行RSS阅读代码的构造函数的类。
以此为例:
public class MyRssReaderViewModel
{
public MyRssReaderViewModel()
{
//Read RSS and populate properties
LoadRSS();
}
public void LoadRSS()
{
...
}
...
}
现在,如果你要像这样设置DataContext
:
<Window.DataContext>
<ViewModels:MyRssReaderViewModel/>
</Window.DataContex>
设计人员将在设计时实例化类,并通过扩展调用LoadRSS
方法。引用视图模型中属性的任何元素都将更新以显示绑定数据。
需要注意的一件重要事情是每次构建项目时都会实例化该类。