#c_sharp #wpf #mvvm #datagrid
У меня есть коллекция объектов, каждый объект имеет в себе коллекцию других объектов.
Возможно ли эту коллекцию вывести в DataGrid.
Мой код:
//ViewModel
public class ObladnanViewModel
{
public ObservableCollection Collection { get; set; }
public ObservableCollection Electromotors { get; set; }
public ObladnanViewModel()
{
Electromotors =new ObservableCollection()
{
new ElectromotoruModel(){Id= 1,Marka = "AO2",Name = "Main"},
new ElectromotoruModel(){Id=2,Marka = "4",Name = "Main"},
new ElectromotoruModel(){Id=3,Marka = "AO2",Name = "Main"}
};
Collection=new ObservableCollection()
{
new ObladnanModel(1,"Obl1",Electromotors),
new ObladnanModel(2,"Obl2",Electromotors)
};
}
}
Класс ElectromotoruModel:
public class ElectromotoruModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Marka { get; set; }
}
public class ObladnanModel
{
public int Id { get; set; }
public string Name { get; set; }
public ObservableCollection Elektromotors { get; set; }
public ObladnanModel(int id, string name, ObservableCollection
electromotors)
{
this.Id = id;
this.Name = name;
this.Elektromotors = electromotors;
}
}
И пробивал так XAML:
Но в Motors выводит просто пустую строку.
Возможно ли сделать так:
Ответы
Ответ 1
В английской литературе это называется RowDetails. Вполне логично - детали строки. так вот, вам нужен RowDetailsTemplate. Подозреваю, что в вашем случае, вы хотите в качестве подстроки использовать ещё одну таблицу с несколькими колонками.Ответ 2
Нашел решение. Правда не в DataGrid а в ListBox но и так пойдет) Моя ViewModel: public class ObladnanViewModel { public ObservableCollectionCollection { get; set; } public ObladnanViewModel() { Collection=new ObservableCollection () { new ObladnanModel(1,"Obl1",new ObservableCollection () { new ElectromotoruModel(){Id= 1,Marka = "AO2",Name = "Main"}, new ElectromotoruModel(){Id=2,Marka = "4",Name = "Main"}, new ElectromotoruModel(){Id=3,Marka = "AO2",Name = "Main"}}), new ObladnanModel(2,"Obl2",new ObservableCollection () { new ElectromotoruModel(){Id= 1,Marka = "36",Name = "Main"}, new ElectromotoruModel(){Id=6,Marka = "4",Name = "Vent"}, new ElectromotoruModel(){Id=3,Marka = "AO6",Name = "cooling"}, new ElectromotoruModel(){Id = 4,Marka = "C03",Name = "movement table"}} ) }; } } Код Xaml: Результат:
Комментариев нет:
Отправить комментарий