在以下文章中找到的示例应用程序中:
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
在CustomerView视图中,如果在该视图的构造函数中放置断点,则第一次触发断点。对于显示的UserControl的后续实例,不会再次调用构造函数。
两个问题:
答案 0 :(得分:2)
只创建了一个CustomerView
。当您更改CustomerViewModel
时,它不会创建新的CustomerView
,而是会重复使用现有的{{1}}。
答案 1 :(得分:1)
视图刚创建一次的原因是它在TabControl / HeaderedContentControl中。
如果使用列表框,您会看到每次添加新的视图模型时,也会创建一个新视图。
<ListBox ItemsSource="{Binding Path=Workspaces}">
</ListBox>
而不是
<HeaderedContentControl
Content="{Binding Path=Workspaces}"
ContentTemplate="{StaticResource WorkspacesTemplate}"
Header="Workspaces"
Style="{StaticResource MainHCCStyle}"
/>
编辑:
每次创建新的CustomerView时,我在哪里可以放置我想要执行的代码?
如果您使用DataTemplates,您将永远不会自己创建新视图。您只需创建一个新的VM /对象,然后将其显示为DataTemplate。
如果您想自己创建视图,则必须先进行“查看第一”方法,然后将正确的ViewModel添加到创建的视图中。