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?

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top