wpf data-binding datatemplate resourcedictionary contentcontrol

wpf - Cómo enlazar a los datos dentro de una plantilla de datos de un ContentControl



data-binding datatemplate (1)

Debes unir el Content propiedad del ContentControl

<ContentControl Content="{Binding}" ContentTemplate="{StaticResource PersonTemplate}" />

Esto establecerá el DataContext de ContentControl como contenido del control.

Establecer solo la propiedad ContentTemplate no es suficiente. ContentControl no utiliza implícitamente su DataContext como contenido.

Tengo el siguiente ejemplo simplificado:

<Window x:Class="TemplateBinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/TemplateBinding;component/PersonTemplate.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Grid> <ContentControl ContentTemplate="{StaticResource PersonTemplate}" /> </Grid> </Window>

Con:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <DataTemplate x:Key="PersonTemplate"> <Border Width="100" Height="100" Background="RosyBrown"> <TextBlock Text="{Binding Path=FirstName}" VerticalAlignment="Center" TextAlignment="Center"/> </Border> </DataTemplate> </ResourceDictionary>

como mi DataTemplate en un archivo separado ResourceDictionary.

Configuré mi DataContext en el Construcor de mi MainWindow y lo he verificado simplemente mostrando el primer nombre como este: <ContentControl Grid.Row="1" Content="{Binding FirstName}"/> .

En otro escenario donde utilizo un DataTemplate con un ListBox , hago el enlace exactamente de la misma manera en mi DataTemplate y simplemente funciona.

Sé que DataTemplate funciona, excepto el enlace porque muestra correctamente el tamaño y el color de fondo.

¿Qué estoy haciendo mal? ¿Cómo debería verse el enlace en mi DataTemplate?