Search code examples
wpfvisual-studio-2012datatemplatedatacontextdesigner

Design-time DataContext in a DataTemplate?


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.


Solution

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