wpf – 重写DataGridTextColumn

我试图提供一个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

点赞