Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Возможно ли в datagrid вывести подстроки?

#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 ObservableCollection Collection { 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: Результат:

Комментариев нет:

Отправить комментарий