我的ItemsSource语法好吗?

时间:2009-02-11 00:46:37

标签: c# wpf xaml itemssource

我有以下XAML。我们说FruitList是Fruit的集合,每个Fruit都有FruitSeeds的集合。是否有将cbxFruitSeeds绑定到FruitSeeds集合的语法,具体取决于在cbxFruits中选择哪个Fruit?

<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 个答案:

答案 0 :(得分:1)

看起来你正试图做一个级联组合框。

Is there really no way to follow up dataset parent relation in xaml binding?显示了如何在xaml中设置父子。

答案 1 :(得分:0)

以正确的方式做到这一点的两种方法。

  1. 将集合视图设置为第二个组合框的源,然后设置第一个组合框以更改该集合视图上的过滤器。
  2. 第一个组合框的项目的数据类型都包含第二个组合框的项目列表。选择第一个组合框后,将其结果设置为第二个数据上下文,然后将第二个组合框绑定到包含的列表中。
  3. 第一个是首选,因为您不需要将水果类型存储在保存用户选择的数据中。第一个组合框由配置或元数据填充。