Динамическое добавление столбцов в DataGrid из ObservableCollection avalonia

Всем привет. Возникла проблема с динамическим выводом данных из коллекции. У меня есть коллекция коллекций которую мне нужно вывести в DataGrid. Когда делаю бинд на свою коллекцию, то ничего не выводится, если сделать автоматическую генерацию столбцов то выводится только свойства коллекции, кроме данных. Получается только через статический вывод по столбцам если указать индекс. Подскажите пожалуйста как сделать динамическую генерацию столбцов с данными

VM:

 public class MainWindowViewModel : ViewModelBase
    {
    public ReactiveCommand<Unit, Unit> Click { get; set; }
    
    private ObservableCollection<ObservableCollection<string>> _table = new ObservableCollection<ObservableCollection<string>>();

    public ObservableCollection<ObservableCollection<string>> Table
    {
        get => _table;
        set => this.RaiseAndSetIfChanged(ref _table, value);
    }

    public MainWindowViewModel()
    {
        Table = new ObservableCollection<ObservableCollection<string>>();
        Click = ReactiveCommand.Create(() =>
        {
            Table.Add(new (){"asdasd", "asdasd"});
            Table.Add(new (){"asdasd"});
            Table.Add(new (){"asdasd", "asdasd"});
            Table.Add(new (){"asdasd", "asdasd"});
            Table.Add(new (){"asdasd", "asdasd"});
        });
    }
}

View:

<StackPanel>
        <Button Content="click" Command="{Binding Click}"></Button>
        <DataGrid ItemsSource="{Binding Table}" AutoGenerateColumns="True">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding [0]}"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding [1]}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </StackPanel>

Ответы (1 шт):

Автор решения: aepot

Используйте DataTable, пример использования: DataGrid c#. Как вносить значения в ячейки пользователю?

При этом динамически без принудительной перегенерации колонок это не сделать, так как DataGrid не расчитана на такое изменение в данных. В ответе по ссылке обратите внимание на строчку кода Data = Data.Copy(), это вызывает сеттер свойства данных и инициирует перегенерацию колонок. В принципе это работает незаметно для пользователя, но в каких-то случаях придется подкорректировать координаты выбранной ячейки, если потребуется.

Альтернативой может служить изготовление собственного контрола-таблицы, который будет отображать данные так как вам надо. Пример построения визуальный матрицы здесь (вложенный ItemsControl) или здесь (UniformGrid).

UPD: только после написания ответа увидел, что это Avalonia, а не WPF, но думаю, что логика решения задачи будет та же.

→ Ссылка