Как заставить мой WPF UserControl работать с CompositeCollection - PullRequest
0 голосов
/ 28 июня 2009

У меня есть пользовательский элемент управления wpf, который предоставляет IEnumerable ItemsSource DependencyProperty. Я привязываю это свойство к элементу управления ListBox в моем UserControl.

Я хотел бы знать, как заставить мой пользовательский элемент управления работать, когда предоставляется CompositeCollection. В настоящее время я использую свой контроль следующим образом:

<my:uc>
  <my:uc.ItemsSource>
    <CompositeCollection>
      <CollectionContainer Collection="{My Binding}"></CollectionContainer>
      <CollectionContainer Collection="{My Binding}"></CollectionContainer>
    </CompositeCollection>
  </my:uc.ItemsSource>
</my:uc>

Я бы хотел, чтобы содержимое этих CollectionContainers отображалось в списке, но в данный момент оно не перечисляется через контейнеры. В моем списке отображаются только два элемента «System.Data.CollectionContainer».

[б] Edit: [/ b] Дизайнер XAML сообщает мне, что «Свойство ItemsSource не поддерживает значения типа CompositeCollection». Я думаю, что это моя проблема ... но как мне сделать так, чтобы она "поддерживала" CompositeCollection?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2009

Правильный ответ заключался в создании класса, расширяющего ItemsControl. Вы не можете использовать XAML при разработке элемента управления, но он предоставляет вам специальное свойство ItemsSource, которое поддерживает CollectionContainers. Представление элемента управления должно быть определено в его свойстве ContentTemplate.

0 голосов
/ 28 июня 2009

Я думаю, что вы получаете метод ToString вашего объекта, который по умолчанию возвращает имя типа.

Попробуйте переопределить ToString и вернуть значение, которое хотите видеть в своем списке.

...