wpf datagrid 插入带控件的自定义列的做法
在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的数据源。至此结束。