Я пишу пользовательский элемент управления WPF для своего приложения, упаковывая ListBox и некоторые другие элементы.
В ListBox есть новый ItemTemplate, который представляет четыре элемента информации для каждого элемента в моем списке. Я могу жестко закодировать каждую из четырех привязок к определенным свойствам в моих элементах списка, и они отображаются нормально.
Однако я хочу, чтобы мой UserControl был немного более гибким.
Вкл. ListBox и ComboBox есть свойство DisplayMemberPath (унаследованное от ItemsControl), которое, кажется, «внедряет» соответствующую привязку свойства в стандартный ItemTemplate.
Как мне добиться того же результата с помощью моего пользовательского элемента управления?
Я бы хотел настроить четыре новых свойства, чтобы разрешить настройку отображаемой информации:
public string LabelDisplayPath { get; set; }
public string MetricDisplayPath { get; set; }
public string TitleDisplayPath { get; set; }
public string SubtitleDisplayPath { get; set; }
Просмотр ItemsControl.DisplayMemberPath с помощью Reflector, кажется, идет по кроличьей норе, я не смог понять, как это работает.
Кроме того, если я совершенно не в курсе - и есть еще одна, более "техника WPF", которую я должен использовать вместо этого, пожалуйста, укажите мне в этом направлении.
Обновление
Вот разъяснение того, чего я пытаюсь достичь.
ListBox в моем пользовательском элементе управления отображает четыре элемента информации для каждого элемента: метка, заголовок, субтитры и метрика
В одном месте я хочу использовать этот пользовательский элемент управления для отображения списка проблем. Каждый выпуск выглядит так:
public class Issue {
public string Code { get; set; }
public string Description { get; set; }
public string Priority { get; set; }
public string Reporter { get; set; }
}
При отображении проблем я хочу использовать следующие сопоставления:
Code --> Label
Description --> Title
Reporter --> Subtitle
Priority --> Metric
В другом месте того же приложения у меня есть список сообщений, которые я хочу отображать с помощью того же UserControl. Каждый пост выглядит так:
public class Post {
public DateTime PostedOn { get; set; }
public string Title { get; set; }
public string Teaser { get; set; }
public int CommentCount { get; set; }
}
При отображении сообщений я хочу использовать следующие сопоставления:
PostedOn --> Label
Title --> Title
Teaser --> Subtitle
CommentCount --> Metric
Учитывая, что выпуски и сообщения - это совершенно разные абстракции, я не хочу, чтобы они имели одинаковые свойства, просто чтобы позволить UserControl использоваться без изменений. Вместо этого я хочу немного изменить конфигурацию, чтобы можно было аккуратно использовать свой UserControl на обоих сайтах.