#c# #wpf #mvvm #datagrid #wpfdatagrid
#c# #wpf #mvvm #сетка данных #wpfdatagrid
Вопрос:
Я хотел бы, чтобы одна сетка данных была привязана к большой viewmodel. Затем, чтобы предоставить пользователю возможность выбирать с помощью выпадающего списка, какой набор свойств в viewmodel будет отображаться в datagrid.
Очевидно, что я мог бы иметь сетку данных для каждого макета и указать набор столбцов для каждой сетки данных. Но я чувствую, что должен быть более приятный способ сделать это?
Например, допустим, моя модель представления выглядит следующим образом:
public class MyGridRowViewModel{
public string A {get;set;}
public string B {get;set;}
public string C {get;set;}
public string D {get;set;}
}
И пользователь может выбрать из выпадающего списка, хочет ли он макет X или Y.
Макет X должен отображаться только A
и B
в сетке данных. Макет Y должен отображаться только A
и C
в сетке данных.
Комментарии:
1. Вы можете сделать это в представлении, захватив событие изменения выбора в выпадающем списке, а затем вручную отображая / скрывая столбцы сетки, но я не могу придумать простой способ MVVM сделать это навскидку. Вы могли бы это сделать, но я думаю, что привязки и преобразователи значений сделают это очень сложным сценарием. Другой предложенный вами способ (несколько сеток данных и настройка их видимости на основе выбора со списком) довольно прост и может быть аккуратно выполнен в MVVM. Мы использовали этот метод, и он отлично работает.
2. Вы можете привязать видимость столбца к выпадающему списку и использовать конвертер, чтобы показать или скрыть его.
3. Используйте
ContentControl
с отдельнымContentTemplate
.