2013-07-04 14 views
11

Sembra che abbia colpito un muro cercando di utilizzare DataTemplates sul mio DataGrid. Quello che sto cercando di fare è usare un modello per mostrare due righe di testo per ogni cella. Ma non sembra possibile legare la colonna in alcun modo.Binding DataGridTemplateColumn

Il seguente codice mostra con speranza cosa desidero fare. Notare il Binding per ogni colonna: non esiste una cosa simile per una colonna di template, e come tale, questo xaml non potrebbe funzionare.

Sono condannato a copiare l'intero DataTemplate in ogni colonna solo per avere un'associazione diversa per ogni copia? Sicuramente c'è un bel modo per aggirare questo? O sto semplicemente perdendo qualcosa di accecantemente ovvio?

+0

"O mi manca ancora qualcosa di accecantemente ovvio?" - Siamo stati tutti lì, specialmente con WPF. –

risposta

4

Non sono completamente sicuro di ciò che si sta tentando di fare ma se è necessario ottenere il DataContext dell'intera riga, è possibile utilizzare un binding RelativeSource per salire l'albero visivo. Così:

<DataTemplate x:Key="DoubleField"> 
    <StackPanel> 
     <TextBlock Text="{Binding DataContext.Value1, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/> 
     <TextBlock Text="{Binding DataContext.Value2, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/> 
    </StackPanel> 
</DataTemplate> 
+1

Il problema è la mancanza di possibilità di associazione quando definisco una colonna templatecolumn. Non sembra essere un modo per me per dire che la prima colonna dovrebbe dare il campo Titolo al modello da mostrare. –

+0

Il datatemplate della colonna del modello è già fornito con il contesto dei dati della riga. – Gman