-2

我有一个 2 列 WPF Datagrid,它绑定到人对象的 ObservableCollection。网格的一列是显示(正确)性别的下拉列表 - 男性或女性。

我想要做的是根据男性或女性的界限值在第二列(ieCol2)的另一个下拉列表中动态显示选择。

我没有看到 OnRowBound 事件;但似乎我需要根据性别列在 Col2 上交换我的 itemsource,以在 Col2 列 {每行} 中生成下拉列表的值。
这听起来可行吗?

4

2 回答 2

0

您可以使用下面的示例代码来执行此类任务。它假定您有某种 Gender 属性(枚举)和应出现在列中的女性和男性项目的集合。它不完整 - 你应该添加选定的项目绑定、显示成员路径等。但我认为这足以让你明白这一点:

<DataGrid ItemsSource="{Binding SomeCollection}">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Gender}"/>
        <DataGridComboBoxColumn>
            <DataGridComboBoxColumn.ElementStyle>
                <Style TargetType="ComboBox" BasedOn="{StaticResource {x:Type ComboBox}}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Gender}" Value="{x:Static enums:Gender.Female}">
                            <Setter Property="ItemSource" Value="{Binding FemaleItems}"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Gender}" Value="{x:Static enums:Gender.Male}">
                            <Setter Property="ItemSource" Value="{Binding MaleItems}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGridComboBoxColumn.ElementStyle>
        </DataGridComboBoxColumn>
    </DataGrid.Columns>
</DataGrid>
于 2014-08-12T16:00:07.703 回答
0

谢谢伊万,

这是我正在寻找的完整示例。

http://sekagra.com/wp/2013/04/dynamic-itemssource-for-combobox-in-a-datagrid/

于 2014-08-13T02:35:26.297 回答