Мой синтаксис ItemsSource в порядке? - PullRequest
0 голосов
/ 11 февраля 2009

У меня есть следующий XAML. Допустим, FruitList представляет собой коллекцию фруктов, каждый из которых имеет коллекцию FruitSeeds. Существует ли синтаксис для привязки cbxFruitSeeds к коллекции FruitSeeds в зависимости от того, какой Fruit выбран в cbxFruits?

<GridView>

    <GridViewColumn Header="Fruits">

        <GridViewColumn.CellTemplate>

            <DataTemplate>

                <ComboBox DisplayMemberPath="Fruit.Name" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.FruitList}" x:Name="cbxFruits"/>

            </DataTemplate>

    </GridViewColumn.CellTemplate>

</GridViewColumn>

    <GridViewColumn Header="FruitSeeds">

        <GridViewColumn.CellTemplate>

            <DataTemplate>

                <ComboBox x:Name="cbxFruitSeeds"></ComboBox>

            </DataTemplate>

        </GridViewColumn.CellTemplate>

    </GridViewColumn>

</GridView>

Ответы [ 2 ]

1 голос
/ 11 февраля 2009

Похоже, вы пытаетесь создать каскадный комбинированный список.

Неужели нет способа отслеживать родительское отношение набора данных в привязке xaml? показывает, как выполнить настройку родитель-потомок в xaml.

0 голосов
/ 12 сентября 2013

Два способа сделать это правильно.

  1. Установите представление коллекции в качестве источника для второго комбинированного списка, затем настройте первый список, чтобы изменить фильтр в этом представлении коллекции.
  2. Иметь тип данных для элементов первого комбинированного списка, каждый из которых содержит список элементов для второго комбинированного списка. Когда первый комбинированный список выбран, его результат устанавливается в качестве контекста данных второго, а затем связывается второй с содержащимся списком.

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

...