我正在使用WPF和model-view-viewmodel模式。我有一个ResultsView和ResultsViewModel其连接这样的:为什么每次创建新视图模型时都不会调用视图构造函数?
<DataTemplate DataType="{x:Type VM:ResultsViewModel}">
<VW:ResultsView/>
</DataTemplate>
在我的主要窗口,我有某种分页设置在哪里搜索Maincontent属性存储当前页面(视图模型实例)。
我创建这样
MainContent = new ResultsViewModel();
ResultsView网页是基于用户控件,它也有,做一些UI初始化加载的东西,事件的处理程序。
用户在不同页面之间导航时,一切正常。
但是,如果用户连续两次打开ResultsView,ResultsView构造函数是而不是第二次调用,并且Loaded事件未被调用。现在看来,我已经将相同的旧ResultsView实例附加到新的ResultsViewModel()!
为什么每次创建一个新的ViewModel时,WPF都不会创建一个新的View?如果旧的viewmodel被破坏,有什么办法可以强制WPF放弃旧的视图?
很酷,不知道x:共享修饰符。 – 2011-05-05 16:08:09
对此有何评论? – MDDDC 2015-02-02 19:20:38
如果共享未设置为false,则DataTemplate将加载“ResultsView”的相同实例。因此'ResultsView'的构造函数未被调用。 – jHilscher 2017-03-01 15:12:09