为什么每次创建新的viewmodel时都不调用视图构造函数?

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丢弃旧视图?

Ken*_*art 7

<DataTemplate x:Shared="False" DataType="{x:Type VM:ResultsViewModel}">
    <VW:ResultsView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)