我试图提供一个DataGrid列,其行为类似于DataGridTextColumn,但在编辑模式下有一个额外的按钮.我查看了DataGridTemplateColumn,但似乎更容易将DataGridTextColumn子类化如下
问题是textBox在添加到网格时失去了绑定.也就是说,其Text属性的更改不会反映在非编辑TextBlock或基础视图模式中
有关为什么会这样,以及我如何解决它的任何想法?
public class DataGridFileColumn : DataGridTextColumn
{
protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
{
TextBox textBox = (TextBox)base.GenerateEditingElement(cell, dataItem);
Button button = new Button { Content = "..." };
Grid.SetColumn(button, 1);
return new Grid
{
ColumnDefinitions = {
new ColumnDefinition(),
new ColumnDefinition { Width = GridLength.Auto },
},
Children = {
textBox,
button,
},
};
}
}
我正在使用.NET 3.5和WPF工具包
最佳答案 事实证明,您还需要覆盖PrepareCellForEdit,CommitCellEdit和CancelCellEdit
基类假定(并非不合理地)传入的FrameworkElement将是TextBox