When I put a DataTemplate
in a <Page.Resources>
section, it inherits the DataContext
of the Page
when editing bindings inside the designer. However at run-time the DataTemplate
is being used by an element inside the Page
which has its own DataContext
. I want the designer to show the inner DataContext
while binding instead.
Is there a tag like d:DataContext
for DataTemplates
? Setting DataType
doesn't do anything.
I found you can just set d:DataContext
on the root element inside the 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>
I realize this is super old but for the sake of making SO better. DataTemplates have a "DataContext" through the DataType tag.
<DataTemplate DataType="{x:Type local:Person}">
<StackPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Age}" />
<TextBlock Text="{Binding Height}" />
</StackPanel>
</DataTemplate>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With