Jus*_*tin 1 wpf constructor view mvvm
我正在使用WPF与model-view-viewmodel模式.我有一个ResultsView和ResultsViewModel连接如下:
<DataTemplate DataType="{x:Type VM:ResultsViewModel}">
<VW:ResultsView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
在我的主窗口中,我有一些分页设置,其中MainContent属性存储当前页面(ViewModel实例).
我像这样创建页面
MainContent = new ResultsViewModel();
Run Code Online (Sandbox Code Playgroud)
ResultsView基于UserControl,它还有一个Loaded事件的处理程序,它执行一些UI初始化的东西.
当用户在不同页面之间导航时,一切正常.
但是如果用户连续两次打开ResultsView,则不会再次调用ResultsView构造函数,也不会调用Loaded事件.看来现在我将新的ResultsView实例附加到新的ResultsViewModel()!
为什么每次创建新的ViewModel时WPF都不会创建新视图?如果旧的视图模型被破坏,有什么方法可以强制WPF丢弃旧视图?
<DataTemplate x:Shared="False" DataType="{x:Type VM:ResultsViewModel}">
<VW:ResultsView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)