Вопрос

У меня есть следующие классы, которые содержат наблюдательные элементы следующего уровня вниз:

Draw
ObservableCollection<Round>();

Round
ObservableCollection<Formation>();

Formation
.

Так что ничья состоит из раундов, раунды состоят из образований.

У меня есть страница, которая имеет кнопку для создания случайного розыгрыша, у меня в настоящее время он вызывает другой класс, который возвращает ничьей:

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

У меня нет проблем, связывающих список для раундов и отображения круглой информации, но как я могу отображать отдельные формирования?Это то, что я в настоящее время делаю, я не ожидал, что сможет просто показать вещи, привязывающие к образованию, но как мне получить доступ?

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

Это было полезно?

Решение

Вы должны взглянуть на иерархические шаблоны данных, которые используются элементом управления WPF TreeView, а не список просмотров. Они натуральные пригодные для демонстрации иерархических данных. Конечно, как любой контроль WPF, вы можете полностью настроить свой внешний вид, используя стиль и шаблоны. Вот несколько хороших ссылок:

MSDN Как: использовать TreeView для отображения иерархических данных < / P >.

Иерархическое подтверждение в WPF

Однако, если вы хотите использовать использование ListViews, то один из способов сделать это - это вставать на другой элемент управления контейнера внутри родительского списка. Облюданные элементы обработки автоматически обрабатываются определенными элементами WPF, такие как панели. В вашем примере вы можете заменить второй текстовыйБлок с другим ListView, с помощью ItemTemplate, аналогичной первой. Это также может быть любая коллекционная панель, такая как 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>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top