DataTemplate中的设计时DataContext?

时间:2013-06-19 09:47:34

标签: wpf visual-studio-2012 datatemplate datacontext designer

当我在DataTemplate部分中添加<Page.Resources>时,在编辑设计器内部的绑定时,它会继承DataContext的{​​{1}}。但是,在运行时,Page内的元素正在使用DataTemplate,该元素具有自己的Page。我希望设计师在绑定时显示内部DataContext

DataContext是否有d:DataContext这样的标记?设置DataTemplates没有任何作用。

2 个答案:

答案 0 :(得分:5)

我发现你可以在d:DataContext内的根元素上设置DataTemplate

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

<ListBox ItemsSource="{Binding People}">
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel d:DataContext="{d:DesignInstance Type=local:Person}">
            <TextBlock Text="{Binding Name}" />
            <TextBlock Text="{Binding Age}" />
            <TextBlock Text="{Binding Height}" />
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

答案 1 :(得分:5)

我意识到这是超级旧的,但为了让它变得更好。 DataTemplates通过DataType标签有一个“DataContext”。

<DataTemplate DataType="{x:Type local:Person}">
    <StackPanel>
        <TextBlock Text="{Binding Name}" />
        <TextBlock Text="{Binding Age}" />
        <TextBlock Text="{Binding Height}" />
    </StackPanel>
</DataTemplate>