Frage

Gibt es ein Äquivalent Mechanismus zum ItemsControl.ItemTemplate, die mit einem Grid funktioniert? Ich habe eine Sammlung von Gegenständen, und ich möchte sie als Zeilen in einer Grid präsentieren, so dass ich Grid.Column auf die einzelne Elemente innerhalb der Schablone zuweisen kann (im Gegensatz zu Zeilen in einer Listensteuerung entgegengesetzt). Ist das möglich in WPF mit Standard-Kontrollen?

War es hilfreich?

Lösung

Ok, verwenden Sie einen Itemscontrol mit der Grid.IsSharedSizeScope="true" angebrachten Eigenschaft angewandt. Als nächstes für Ihre ItemTemplate verwenden Sie eine <Grid> wie Sie normalerweise würde jetzt nur zulassen, wenn Sie ColumnDefinitions fügen Sie das SharedSizeGroup Attribut auf einen Namen festlegen, die für jede Spalte eindeutig ist. So zum Beispiel:

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

Für mehr auf IsSharedSizeScope und SharedSizeGroup, Scheck aus diesem Abschnitt des SDK . Es sollte beachtet werden, dass RowDefinitions auch eine SharedSizeGroup haben, so dass Sie auch horizontale Layouts tun könnte.

Andere Tipps

Vielleicht falsch verstand ich dein Problem, aber ist es nicht genau das, was ein Grid das?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top