Wpf DataGrid Устанавливает столбцы динамически по свойству списка - PullRequest
0 голосов
/ 14 января 2020

У меня есть небольшой калибровочный микро-проект MVVM с DataGrid. Столбцы будут состоять из x значений 'setup', а строки будут состоять из 'CustomRow'. Я хотел бы использовать ObservableCollection, где CustomRow имеет свойство function и коллекцию свойства setup. Для каждой настройки в этой коллекции должен существовать столбец со значением настройки.

class CustomRow
{
    public string Function { get; set; }
    public ObservableCollection<Setup> Setups { get; set; }
}

// example class
class Setup
{
    public string Name { get; set; }
    public object Content { get; set; }
}

Поэтому мне нужно иметь возможность динамически добавлять столбцы и строки в зависимости от источника элементов (все коллекции настроек будут иметь одинаковые значения). размер).

Моя проблема в том, что я не знаю, как перевести свойство Setups в несколько столбцов. Я потратил немного времени на то, что, по моему мнению, должно быть мирской проблемой. Но я что-то упустил. Буду признателен за любую оказанную помощь.

1 Ответ

0 голосов
/ 14 января 2020

Свяжите или установите ItemsSource в ObservableCollection<CustomRow>, а затем получите свойство Setups первого CustomRow в исходной коллекции в представлении, например:

private void Window_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    var vm = DataContext as YourViewModel;
    dataGrid.Columns.Clear();
    if (vm.Rows != null && vm.Rows.Count > 0)
    {
        var setups = vm.Rows[0].Setups;
        foreach (var setup in setups)
        {
            dataGrid.Columns.Add(new DataGridTextColumn { Header = setup.Name, Binding = new Binding("Content ") });
        }
    }
    dataGrid.ItemsSource = vm.Rows;
}

Существует нет способа привязать свойство Columns DataGrid непосредственно к свойству источника, поэтому вам нужно самим создавать столбцы тем или иным способом.

Вы должны сделать это в представлении, в элементе управления или в прикрепленном поведении, которое присоединено к любому из них. Модель представления не должна создавать столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...