Одна сетка данных с несколькими представлениями

#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 .