WPF - DataTemplate senza contenitore, elementi come righe in una griglia?
Domanda
Esiste un meccanismo equivalente a ItemsControl.ItemTemplate
che funziona con un Grid
? Ho una raccolta di elementi e vorrei presentarli come righe in Grid.Column
in modo da poter assegnare <=> ai singoli elementi all'interno del modello (al contrario delle righe in un controllo elenco). Questo è possibile in WPF usando i controlli standard?
Soluzione
Ok, usa un ItemsControl con la proprietà Grid.IsSharedSizeScope="true"
applicata. Successivamente, per il tuo ItemTemplate, usi un <Grid>
proprio come faresti normalmente ora quando aggiungi ColumnDefinition
s imposti l'attributo SharedSizeGroup
su un nome univoco per ogni colonna. Quindi ad esempio:
<ItemsControl Grid.IsSharedSizeScope="true">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="MyFirstColumn" />
<ColumnDefinition SharedSizeGroup="MySecondColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding MyFirstProperty}"/ >
<TextBlock Grid.Column="1" Text="{Binding MySecondProperty}"/ >
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Per ulteriori informazioni su IsSharedSizeScope e SharedSizeGroup, check questa sezione dell'SDK . Va notato che RowDefinitions ha anche un SharedSizeGroup in modo da poter fare anche layout orizzontali.
Altri suggerimenti
Forse ho frainteso il tuo problema, ma non è esattamente quello che GridView fa?