25

Ich habe folgendes vereinfachtes Beispiel binden:Wie man Daten in einem Datatemplate eines Content

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

mit:

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

als meine Datatemplate in einer separaten Datei Resource.

Ich habe meinen DataContext in den Constructor meines MainWindow gesetzt und verifiziert, indem ich einfach den Vornamen wie folgt angezeigt habe: <ContentControl Grid.Row="1" Content="{Binding FirstName}"/>.

In einem anderen Szenario, in dem ich eine DataTemplate mit einer ListBox verwende, mache ich die Binding genau so in meiner DataTemplate und es funktioniert einfach.

Ich weiß, dass das DataTemplate mit Ausnahme der Bindung funktioniert, da es die Größe und Hintergrundfarbe korrekt anzeigt.

Was mache ich falsch? Wie müsste die Bindung in meinem DataTemplate aussehen?

Antwort

54

Sie benötigen die Content -Property des Content

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

Diese binden die Datacontext des Content als Inhalt der Steuerung eingestellt.

Einstellung nur die ContentTemplate Eigenschaft ist nicht genug. Das ContentControl verwendet seinen DataContext nicht implizit als Inhalt.

+1

Haben Sie einen Link zu den Dokumenten auf diesem? Es löste mein Problem vollständig, bin aber neugierig, ob es noch andere Probleme gibt. –