#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}"/>