我需要使用自定义CellTemplate创建可重用的DataGrid列.除其他外,这个CellTemplate应该包含一个TextBlock控件,我需要将值绑定到DataGrid中显示.到目前为止我看到的所有示例都是在DataGrid的Columns属性中直接指定了CellTemplate,并且还直接指定了绑定到TextBlock,例如:
<data:DataGrid> <data:DataGrid.Columns> <data:DataGridTemplateColumn Header="Name"> <data:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Name}"/> </DataTemplate> </data:DataGridTemplateColumn.CellTemplate> </data:DataGridTemplateColumn> </data:DataGrid.Columns> </data:DataGrid>
我需要将此列封装到一个可重用的控件中,我想为它指定一个Binding,就像普通的DataGridTextColumn一样.换句话说,当使用这个自定义列时,我只想写这样的东西:
<data:DataGrid> <data:DataGrid.Columns> <controls:CustomColumn Header="Name" Binding="{Binding Name}" /> </data:DataGrid.Columns> </data:DataGrid>
问题是我的自定义列继承的DataGridTemplateColumn没有Binding属性.我以为我将能够使用DataGridBoundColumn,但是不可能为它指定CellTemplate.
如何实现理想的行为?谢谢!
解决方法
我认为最简单的方法是创建一个customcontrol,然后像这样使用它:
<DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <controls:CustomColumn Header="Name" Binding="{Binding Name}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
昨天我做了类似的事情,效果很好