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?

È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top