WPF - DataTemplate sans conteneur, éléments sous forme de lignes dans une grille?
Question
Existe-t-il un mécanisme équivalent au ItemsControl.ItemTemplate
qui fonctionne avec un Grid
? J'ai une collection d'éléments et j'aimerais les présenter sous forme de lignes dans un Grid.Column
afin de pouvoir attribuer <=> aux éléments individuels du modèle (par opposition aux lignes d'un contrôle de liste). Est-ce possible dans WPF en utilisant des contrôles standard?
La solution
Ok, utilisez un ItemsControl avec la propriété Grid.IsSharedSizeScope="true"
jointe appliquée. Ensuite, pour votre ItemTemplate, vous utilisez un <Grid>
comme vous le feriez normalement, sauf que maintenant, lorsque vous ajoutez ColumnDefinition
, vous définissez l'attribut SharedSizeGroup
sur un nom unique pour chaque colonne. Ainsi, par exemple:
<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>
Pour plus d'informations sur IsSharedSizeScope et SharedSizeGroup, check cette section du SDK . Il convient de noter que RowDefinitions possède également un groupe SharedSizeGroup afin que vous puissiez également effectuer des présentations horizontales.
Autres conseils
J'ai peut-être mal compris votre problème, mais n'est-ce pas exactement ce qu'est un GridView fait-il?