wpf datagrid 插入带控件的自定义列的做法

发布时间 2023-05-23 04:12:49作者: RX_3

在datagrid节点下加入如下代码

<DataGridTemplateColumn  Header="模版" MinWidth="50" x:Name="test">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox  SelectionChanged="cellComboxTemplate_SelectionChanged" SelectedValue="{Binding DataContext.TemplateNames, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" ItemsSource="{Binding DataContext.TemplateNames, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" IsEditable="True">
                                      
                                    </ComboBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>

                        </DataGridTemplateColumn>

好的,问题来了,最关键的是数据绑定,这里默认读取的数据源是datagrid中绑定的itemsort,所以在这的combox里默认也会去绑定itemsort的数据字段

笔者这里需要有独立的下拉框数据源设置,处理方式是把整个datagrid的数据源进行复合,再次组合成新的数据源。

绑定的数据源指定,需要指定去读取上级datagrid的context的数据。

在binding中加入如下

RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}

意思是去寻找上层 type为 datagrid的数据源。至此结束。