Wpf DataTemplates的DataContext(在ItemsControl中)

Wpf DataTemplates的DataContext(在ItemsControl中),wpf,windows-phone,datatemplate,datacontext,itemscontrol,Wpf,Windows Phone,Datatemplate,Datacontext,Itemscontrol,我不理解DataContext在“HeaderTemplate”和“ItemTemplate”中的行为。为什么他们的行为不同?在“ItemTemplate”中,设计者知道该DataTemplate的DataContext是一个ViewModel,我可以引用所有VM的(公共)属性 在“HeaderTemplate”中,情况并非如此。Designer/IntelliSense不显示我的ViewModel中的可用属性。在WPF中,您可以通过将VM的数据类型添加到DataTemplate来解决这个问题,

我不理解DataContext在“HeaderTemplate”和“ItemTemplate”中的行为。为什么他们的行为不同?在“ItemTemplate”中,设计者知道该DataTemplate的DataContext是一个ViewModel,我可以引用所有VM的(公共)属性

在“HeaderTemplate”中,情况并非如此。Designer/IntelliSense不显示我的ViewModel中的可用属性。在WPF中,您可以通过将VM的数据类型添加到DataTemplate来解决这个问题,但是DataType在WindowsPhone中不可用(我认为WinRT中也不可用)。应用程序在运行时运行良好,但我想在设计器中消除这些警告

<phone:Pivot Title="APP TITLE" ItemsSource="{Binding MenuItemViewModels}">
    <phone:Pivot.ItemTemplate>
        <DataTemplate>
            <!-- Inside this DataTemplate the designer knows that the DataContext is of type "MenuItemViewModel". The property "Text" is known and there are no warnings. Yeeha. -->
            <TextBlock Text="{Binding Text}" />
        </DataTemplate>
    </phone:Pivot.ItemTemplate>
    <phone:Pivot.HeaderTemplate>
        <DataTemplate>
            <!-- Inside this DataTemplate it seems that the designer does not know about any DataContext. Therefore property "Title" is not known and the designer shows a warning. -->
            <TextBlock Text="{Binding Title}" />
        </DataTemplate>
    </phone:Pivot.HeaderTemplate>
</phone:Pivot>

编辑:
当我启动应用程序时,文本和标题都正确显示-我在CodeBehind中创建了三个ViewModels,因此UI上有三个轴,每个轴都正确显示文本(作为轴内容)和标题(作为轴标题)。因此,在运行时,框架知道它必须将我的ViewModel集合用作DataContext,但在DesignTime中不是这样?

MenuItemViewModels
是什么类型?MenuItemViewModels是ObservableCollection类型当DataContext分配给
Pivot
时,DataContext在视图初始化后立即分配(通过构造函数中的隐藏代码)。还有分配给整个UserControl的designtime DataContext。设计器仍然为字段显示红色的属性“Text”和默认颜色的属性“Title”。因此,在ViewModel中可以找到标题,而不是文本。