Как использовать два шаблона для ListViewItem с использованием WPF - PullRequest
1 голос
/ 04 мая 2010

Я хотел бы иметь ListView, в котором были бы элементы, похожие на входящие сообщения Microsoft Outlook, с элементами, упорядоченными в беседах (см. Приложенную фотографию). Элемент может быть либо простым текстовым блоком, содержащим тему разговора (на фотографии это синие линии), либо он может содержать информацию электронной почты, указанную в заголовке ListView. Было бы лучше, если бы элементы с темами беседы были кнопками, чтобы при нажатии этой кнопки можно было показать или скрыть электронные письма внутри этой беседы.

Есть идеи, как мне этого добиться? Нужно ли указывать два шаблона ListViewItem? Если да, как мне указать в коде, какой шаблон использовать для каждого элемента?

Любая помощь будет с благодарностью! С Уважением, Грегор

альтернативный текст http://img401.yfrog.com/img401/1719/inboxy.png

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Вы должны проверить DataTemplateSelector . просто погуглите.

Идея заключается в следующем.

  1. Вы определите 2-3 шаблона в XAML
  2. создать класс, производный от DataTemplateSelector и основанный на объекте field / typeof Вы вернете соответствующий шаблон
1 голос
/ 04 мая 2010

Концепция, используемая на вашем скриншоте, называется Группировка . Вы можете легко использовать группировку, если у вас есть ListCollectionView в качестве вашего ItemsSource. Затем вам нужно указать несколько GroupDescription s для свойства ListCollectionView GroupDescription .

Чтобы определить, как выглядят эти группы, вы можете взглянуть на этот пост SO: Как группировать элементы в WPF ListView . Другие интересующие посты в блоге могут быть: Bea Stollnitz: как я могу сделать группировку по индивидуальному заказу? и Bea Stollnitz: как отсортировать группы элементов данных?

В вашем сценарии вы бы использовали заголовок разговора по электронной почте в качестве заголовка группы и, возможно, некоторые дополнительные данные.

...