有人可以解释一下我在这里使用的代码是如何工作的吗?
<Window.Resources>
    <DataTemplate DataType="{x:Type VM:PBRKEntryViewModel}">
        <V:Overview  />
    </DataTemplate>
    <DataTemplate DataType="{x:Type VM:LoginViewModel}">
        <V:LoginView />
    </DataTemplate>
</Window.Resources>
<Grid>
    <ContentPresenter Content="{Binding CurrentView}"/>
</Grid>       
我目前在细节方面的问题是:
我已经找到了这个描述http://msdn.microsoft.com/en-us/library/System.Windows.Controls.ContentPresenter(v=vs.110).aspx但是备注部分没有回答这个问题.(或者我看不到他们......)
再次,为了清楚起见,一切都很完美,但我不明白为什么,所以这只是一个理解选择模板和绑定的问题.
在你发布的链接的备注部分,这个声明很清楚:
如果存在与Content类型关联的DataTemplate,则ContentPresenter将该DataTemplate应用于Content属性,并显示生成的UIElement及其子元素(如果有).
此外,如果您想知道如何自动选择dataTemplates,您可以在此处阅读 - 数据模板概述.
从链接引用:
DataTemplate类具有DataType属性,该属性与Style类的TargetType属性非常相似.DataTemplate会自动应用于与基础类型关联的所有对象.
这与Styles类似.如果未x:Key在Style上指定任何内容,则它将自动应用于属于定义资源的根元素下的所有子元素.
一旦设置x:Key了Style,它就不再是默认样式,只会应用于显式设置此资源样式的元素.
同样适用于此DataTemplate.当您指定DataType只,成为默认的模板来表示基本数据类型.明确指定x:Key将破坏此功能.