Domanda

Ho le seguenti classi, che contengono osservableCollections del livello successivo:

Draw
ObservableCollection<Round>();

Round
ObservableCollection<Formation>();

Formation
.

Quindi un pareggio è composto da round, i round sono costituiti da formazioni.

Ho una pagina che ha un pulsante per creare un pareggio casuale, attualmente ho chiamato un'altra classe che restituisce un pareggio:

this.defaultViewModel[DrawName] = RandomDraw.generate();
.

Non sto avendo problemi a rilegare un elenco di ListView a Rounds e visualizzando informazioni rotonde, ma come faccio a visualizzare le formazioni individuali?Questo è ciò che sto facendo attualmente, non mi aspettavo di poter solo visualizzare le cose vincolanti alle formazioni ma come posso accedervi?

<ListView
    ItemsSource="{Binding Rounds}"
    IsItemClickEnabled="True"
    ItemClick="ItemView_ItemClick"
    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="0,0,0,9.5">
                <TextBlock
                    Text="{Binding RoundNumber}"
                    TextWrapping="Wrap"
                    Pivot.SlideInAnimationGroup="1"
                    CommonNavigationTransitionInfo.IsStaggerElement="True"
                    Style="{ThemeResource ListViewItemTextBlockStyle}"
                    Margin="0,0,19,0"/>
                <TextBlock
                    Text="{Binding Formations}"
                    TextWrapping="WrapWholeWords"
                    Pivot.SlideInAnimationGroup="2" 
                    CommonNavigationTransitionInfo.IsStaggerElement="True" 
                    Style="{ThemeResource ListViewItemContentTextBlockStyle}"
                    Margin="0,0,19,0"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
.

È stato utile?

Soluzione

Dovresti dare un'occhiata ai modelli di dati gerarchici, che vengono utilizzati dal controllo WPF TreeView anziché Listviews. Sono una vestibilità naturale per mostrare dati gerarchici. Naturalmente, come qualsiasi controllo WPF, è possibile personalizzare completamente il proprio aspetto usando lo styling e i modelli. Ecco alcuni buoni riferimenti:

MSDN Come: Utilizzare un TreeView per visualizzare i dati gerarchici < / P >.

Databindiazione gerarchica in WPF

Tuttavia, se si desidera continuare a utilizzare Listviews, quindi un modo per farlo è nidificare un altro controllo del contenitore all'interno della mailview padre. OsservableCollections vengono elaborati automaticamente da specifici elementi WPF, come i pannelli. Nell'esempio, è possibile sostituire il secondo blocco di testo con un altro elenco, con una voci oggetto simile al primo. Può anche essere qualsiasi elemento del pannello simile alla raccolta, come Stackpanel.

<ListView
    ItemsSource="{Binding Rounds}"
    IsItemClickEnabled="True"
    ItemClick="ItemView_ItemClick"
    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Margin="0,0,0,9.5">
                <TextBlock
                    Text="{Binding RoundNumber}"
                    TextWrapping="Wrap"
                    Pivot.SlideInAnimationGroup="1"
                    CommonNavigationTransitionInfo.IsStaggerElement="True"
                    Style="{ThemeResource ListViewItemTextBlockStyle}"
                    Margin="0,0,19,0"/>
                <!-- CHANGED CODE HERE -->
                <ListView
                    ItemsSource="{Binding Formations}"
                    ...>
                    <ListView.ItemTemplate>...</ListView.ItemTemplate>
                </ListView>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
.

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