在DataTemplate中设计时的DataContext?

8
当我把一个 DataTemplate 放在 <Page.Resources> 部分时,它继承了 PageDataContext,当在设计师内部编辑绑定时。然而,在运行时,DataTemplate 由页面内的元素使用,该元素具有自己的 DataContext。我希望在绑定时,设计师能够显示内部的 DataContext

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

2个回答

11

我发现你只需要在DataTemplate内的根元素上设置d:DataContext即可。

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>


Type参数是不必要的,因为如果您省略它,它将成为默认构造函数的一部分。 - Clonkex

9

我知道这篇文章很老,但是为了让Stack Overflow变得更好。DataTemplates通过DataType标签具有“DataContext”属性。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接