Cómo Enlazar Datos dentro de una Datatemplate de un ContentControl


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 ResourceDictionary separado.

Establezco mi DataContext en el Constructor de mi ventana principal y lo he verificado simplemente mostrando el primer nombre de esta manera: <ContentControl Grid.Row="1" Content="{Binding FirstName}"/>.

En otro escenario donde uso una DataTemplate con un ListBox hago el Enlace exactamente de la misma manera en mi DataTemplate y simplemente funciona.

Sé que la DataTemplate está funcionando excepto el encuadernación porque muestra correctamente el tamaño y el color de fondo.

¿Qué estoy haciendo mal? ¿Cómo tendría que verse el Enlace en mi DataTemplate?

Author: markus s, 2013-03-13

1 answers

Necesita enlazar la propiedad Content-del ContentControl

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

Esto establecerá el DataContext del ContentControl como Contenido del control.

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

 55
Author: Jehof,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-07 09:48:35