В порядке ли мой синтаксис ItemsSource?

У меня есть следующий XAML. Допустим, FruitList — это набор Fruit, каждый из которых имеет набор 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>

person Community    schedule 11.02.2009    source источник
comment
Здесь действительно нужно задать конкретный вопрос.   -  person GEOCHET    schedule 11.02.2009
comment
Вы можете использовать представление коллекции во втором поле со списком и использовать первое поле со списком для управления фильтрацией во втором. Потому что, честно говоря, вам нужно хранить не то, какие фрукты хочет пользователь, а то, какие семена.   -  person Lee Louviere    schedule 12.09.2013


Ответы (2)


Похоже, вы пытаетесь сделать каскадное поле со списком.

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

person Donnelle    schedule 11.02.2009

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

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

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

person Lee Louviere    schedule 12.09.2013