WPF - Datatemplate ohne Container, Elemente als Zeilen in einer Grid?
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?
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 ColumnDefinition
s 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?