Blendability来自哪里?

时间:2015-10-07 10:42:07

标签: wpf visual-studio blend

在最后几天,我研究了MVVM,我下载了几个样本。

以下文章非常好,其中包括源代码:
更好的用户和开发人员体验 - 从Windows窗体到带MVVM的WPF
http://reedcopsey.com/series/windows-forms-to-mvvm/

当我第一次在Visual Studio 2013中打开项目时,所有字段和列表都是空的,就像预期的那样。该程序是一个RSS阅读器,我加载了一个包含大量源项的源,这些源填充了表单中的所有字段。但现在即使我停止了程序,我也能看到设计中的所有数据。

All fields and lists are filled in in design mode

这显然非常好,因为它使得更容易看到并可能修改设计 我认为我所看到的内容被称为Blendability - 但我不确定这一点。

现在我的问题:这个Blendability来自哪里?我查看了项目的源代码,但在设计模式下我找不到数据的来源。

在过去的几天里,我在Visual Studio中安装了几个扩展,也许我安装了导致此行为的东西。或者这可能是本例中的一些特殊功能(文章中未提及)。

如果可能的话,请告诉我这个Blendability的来源以及如何在我自己的项目中实现它。

1 个答案:

答案 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方法。引用视图模型中属性的任何元素都将更新以显示绑定数据。

需要注意的一件重要事情是每次构建项目时都会实例化该类。