AvaloniaUI / Avalonia.Controls.TreeDataGrid

A combined TreeView/DataGrid for Avalonia.
MIT License
233 stars 48 forks source link

Missing text in column headers when changing TreeDataGrid from read-only to edit mode #270

Closed Wowhere closed 1 month ago

Wowhere commented 3 months ago

Missing text in column headers when changing TreeDataGrid from read-only to edit mode

  1. Change TreeDataGrid from read-only to edit mode

Result: Missing text in column headers. When usings horizontal scrollbar, buttons in TemplateColumn are messed up. Actions in video

https://github.com/AvaloniaUI/Avalonia.Controls.TreeDataGrid/assets/69252550/37d09117-e387-4260-8523-4ea10a672e97

Avalonia 11.0.2, Windows 10 Pro 22H2 Also, code

    public void TreeDataGridInit()
    {
        var ColumnLength =        public void TreeDataGridInit()
    {
        var ColumnLength = new GridLength(1, GridUnitType.Star);
        if (IsGridEditable)
        {
            var EditOptions = new TextColumnOptions<Hint>
            {
                BeginEditGestures = BeginEditGestures.Tap,
                IsTextSearchEnabled = true,

            };
            TextColumn<Hint, string> HintTextColumn = new TextColumn<Hint, string>("Text", x => x.HintText, (r, v) => r.HintText = v, options: EditOptions, width: ColumnLength);
            TextColumn<Hint, string> HintCommentColumn = new TextColumn<Hint, string>("Comment", x => x.Comment, (r, v) => r.Comment = v, options: EditOptions, width: ColumnLength);
            HintsGridData = new FlatTreeDataGridSource<Hint>(HintsRows)
            {
                Columns =
                {
                    HintTextColumn,
                    HintCommentColumn,
                    new TemplateColumn<Hint>("", new FuncDataTemplate<Hint>((a, e) => SaveButtonInit(), supportsRecycling: true)),
                    new TemplateColumn<Hint>("", new FuncDataTemplate<Hint>((a, e) => RemoveButtonInit(), supportsRecycling: true))
                },
            };
            IsAddButtonVisible = true;
        }
        else
        {
            HintsGridData = new FlatTreeDataGridSource<Hint>(HintsRows)
            {
                Columns =
                {
                    new TextColumn<Hint, string>("Text", x => x.HintText, width: ColumnLength),
                    new TextColumn<Hint, string>("Comment", x => x.Comment, width: ColumnLength)
                },
            };
            IsAddButtonVisible = false;

        }
        HintsGridData.Selection = new TreeDataGridCellSelectionModel<Hint>(HintsGridData);
    } new GridLength(1, GridUnitType.Star);
        if (IsGridEditable)
        {
            var EditOptions = new TextColumnOptions<Hint>
            {
                BeginEditGestures = BeginEditGestures.Tap,
                IsTextSearchEnabled = true,

            };
            TextColumn<Hint, string> HintTextColumn = new TextColumn<Hint, string>("Text", x => x.HintText, (r, v) => r.HintText = v, options: EditOptions, width: ColumnLength);
            TextColumn<Hint, string> HintCommentColumn = new TextColumn<Hint, string>("Comment", x => x.Comment, (r, v) => r.Comment = v, options: EditOptions, width: ColumnLength);
            HintsGridData = new FlatTreeDataGridSource<Hint>(HintsRows)
            {
                Columns =
                {
                    HintTextColumn,
                    HintCommentColumn,
                    new TemplateColumn<Hint>("", new FuncDataTemplate<Hint>((a, e) => SaveButtonInit(), supportsRecycling: true)),
                    new TemplateColumn<Hint>("", new FuncDataTemplate<Hint>((a, e) => RemoveButtonInit(), supportsRecycling: true))
                },
            };
            IsAddButtonVisible = true;
        }
        else
        {
            HintsGridData = new FlatTreeDataGridSource<Hint>(HintsRows)
            {
                Columns =
                {
                    new TextColumn<Hint, string>("Text", x => x.HintText, width: ColumnLength),
                    new TextColumn<Hint, string>("Comment", x => x.Comment, width: ColumnLength)
                },
            };
            IsAddButtonVisible = false;

        }
        HintsGridData.Selection = new TreeDataGridCellSelectionModel<Hint>(HintsGridData);
    }
Wowhere commented 1 month ago

Problem solved by initialization of length for all columns