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?
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.
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