Динамическая привязка данных в WPF Devx GridControl

#wpf #devexpress #dynamic-data #gridcontrol

#wpf #devexpress #динамические данные #gridcontrol

Вопрос:

Я работаю над приложением WPF (MVVM) и использую DevExpress GridControl. Мне нужно создать общий экран для отображения данных из нескольких таблиц (отображаемых по одной за раз), которые содержат справочные данные. Таким образом, элемент управления grid должен привязываться к набору данных, который может содержать разное количество столбцов в зависимости от таблицы, к которой выполняются запросы.

Вопросы:

1) Какой тип объекта должен возвращать мой уровень доступа к данным? В настоящее время я могу думать только о наборе данных / DataTable .. есть ли какая-либо другая альтернатива, поскольку я действительно хочу избежать использования наборов данных и таблиц данных .. возможно, словарь? Какой наилучший способ вернуть такие данные?

2) В случае, если я возвращаю что-то помимо Dataset / DataTable, как мне связать мой GridControl с этим динамическим сбором данных?

Большое спасибо.

Ответ №1:

В прошлом я с успехом использовал подход, аналогичный этому

http://www.paulstovell.com/dynamic-datagrid

 public class Property : INotifyPropertyChanged
{
    public Property(string name, object value)
    {
        Name = name;
        Value = value;
    }

    public string Name { get; private set; }
    public object Value { get; set; }
}


public class Record
{
    private readonly ObservableCollection<Property> properties = new ObservableCollection<Property>();

    public Record(params Property[] properties)
    {
        foreach (var property in properties)
            Properties.Add(property);
    }

    public ObservableCollection<Property> Properties
    {
        get { return properties; }
    }
}
  
 <DataGrid 
   Name="dataGrid" 
   AutoGenerateColumns="false" 
   ItemsSource="{Binding Path=Records}"/>