Используя эти классы:WPF - Группировка коллекции по типу и шаблонам по типу
public class Person
{
public string LastName { get; set; }
public string FirstName { get; set; }
}
public class Employee : Person
{
public string JobTitle { get; set; }
}
public class Customer : Person
{
public string CustomerID { get; set; }
}
И это ViewModel класс:
public class MainViewModel
{
public ObservableCollection<Person> Persons { get; set; }
}
Как я могу создать мою точку зрения, так что я могу сгруппировать элементы MainViewModel.Persons
по их производному классу Type
и показать <ContentControl>
для каждой группы И <ContentControl>
должен использовать другой DataTemplate
в зависимости от того, что Type
принадлежит конкретному гриву ппа?
Предположим, что у меня есть большое количество классов, которые происходят от Person
, и моя коллекция MainViewModel.Persons
может содержать любой из этих производных классов одновременно.
Я также хотел бы иметь возможность объявить свои различные DataTemplate
в XAML, если это возможно.
GetType() возвращает наиболее производный тип, поэтому ' foreach (var person in person) {Console.WriteLine (GetType(). Name);} 'будет печатать,« Клиент, Сотрудник »и т. д., что должно быть хорошей отправной точкой. – Quantic
@Quantic Как это может мне помочь? –
Думаю, вам нужна коллекция наблюдаемых коллекций Observable в сочетании с селектором шаблонов для родителя. Эту коллекцию можно сохранить, слушая событие CollectionChanged оригинальной коллекции наблюдаемых лиц. –