DataTemplates的DataContext(在ItemsControl中)

时间:2014-01-16 14:18:57

标签: wpf windows-phone datatemplate datacontext itemscontrol

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

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

<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>

编辑: 当我启动应用程序时,Text和Title都正确显示 - 我在CodeBehind中创建了三个ViewModel,因此UI上有三个Pivots,每个都有Text(作为Pivot Content)和Title(作为Pivot Header)正确显示。所以在运行时,框架知道它必须使用我的ViewModel-Collection作为DataContext而不是在DesignTime中?

0 个答案:

没有答案