25

Ho la seguente esempio semplificato:Come associare ai dati all'interno di un DataTemplate di un ContentControl

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

come il mio DataTemplate in un file ResourceDictionary separato.

Ho impostato il mio DataContext nel Costruttore della mia finestra principale e l'ho verificato visualizzando semplicemente il primo nome in questo modo: <ContentControl Grid.Row="1" Content="{Binding FirstName}"/>.

In un altro scenario in cui utilizzo un DataTemplate con un ListBox, eseguo il binding esattamente nello stesso modo nel mio DataTemplate e funziona correttamente.

So che il DataTemplate funziona tranne il legame perché mostra correttamente il colore dimensioni e lo sfondo.

Cosa sto sbagliando? Come sarebbe la rilegatura nel mio DataTemplate deve guardare?

risposta

54

hai bisogno di impegnare la Content -Property del ContentControl

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

Questo imposterà il DataContext del ContentControl come contenuto del controllo.

Impostazione solo la proprietà ContentTemplate non è sufficiente. Il ContentControl non implicitamente utilizzare il suo DataContext come contenuto.

+1

Avete un link per la documentazione su questo? E 'del tutto risolto il mio problema, ma sono curioso di sapere se ci sono altri trucchi. –

Problemi correlati