Как добиться иерархической привязки данных? - PullRequest
0 голосов
/ 21 июня 2011

Изучаю WPF здесь, и я пытаюсь разобраться с иерархической привязкой данных.

Это моя ситуация:

public class A
{
    public int Id { ... }
    public IEnumerable<B> Children { ... }
}

public class B
{
    public string SomeValue { ... }
}

Я хочу использовать ItemsControl для отображения коллекции A и для каждого вхождения A Я хочу, чтобы внутренний ItemsControl отображал A.Children.

Я думал, что это сработает, но, видимо, мне еще многое предстоит узнать ...

<ItemsControl x:Name="icCollectionOfAs" ItemsSource="{Binding}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid Width="auto" Height="auto">
                <TextBlock Text="{Binding Id}" />
                <ItemsControl ItemsSource="{Binding Children}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding SomeValue}" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Затем, в коде позади ...

icCollectionOfAs.ItemsSource = createSomeAsWithChildBsInThem();

Результат всего этого - ничего не показано. Почему?

Спасибо

1 Ответ

2 голосов
/ 21 июня 2011

Не следует указывать ItemsSource как в XAML (ItemsSource="{Binding}"), так и в коде (icCollectionOfAs.ItemsSource = createSomeAsWithChildBsInThem();), который XAML мог быть вызван позже.

Остальное мне кажется хорошим, за исключением того, что TextBlock для идентификатора, вероятно, будет скрыт за дочерним элементом ItemsControl, поскольку вы используете Grid без строк или столбцов, а не StackPanel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...