WPF Datagrid动态项目源

时间:2014-08-12 15:38:06

标签: wpf datagrid itemsource

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用下面的示例代码执行此类任务。它假定您有一些性别属性(枚举)以及应该出现在列中的女性和男性项目的集合。它不完整 - 您应该添加选定的项目绑定,displaymemberpath等。但我认为这足以让您了解这个想法:

<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>

答案 1 :(得分:0)

谢谢伊万,

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

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