覆盖 DataGridTextColumn

Nei*_*eil 5 data-binding wpf datagrid wpftoolkit

我试图提供一个 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,
            },
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 .NET 3.5 和 WPF 工具包

Nei*_*eil 4

事实证明,您还需要重写PrepareCellForEdit、CommitCellEdit 和CancelCellEdit

基类假设(并非没有道理)传入的 FrameworkElement 将是一个 TextBox