WPF: Пользовательский UserControl, который включает в себя элемент управления и наследует элемент управления - PullRequest
3 голосов
/ 01 июня 2011

Я создаю UserControl, который является специализированным ListBox / View (тип не имеет значения). Теперь я столкнулся с возможностью сохранить тип как UserControl или наследовать элемент управления List.

1) Если я сохраню его как UserControl, внутри него будет элемент управления List, а затем я должен создать DP для ItemsSource и т.

2) Пусть он наследует элемент управления List и, таким образом, автоматически выставляет свойство ItemsSource.

В любом случае это приемлемо, или это станет каким-то кодовым ужасом Что ожидается.

Возможно, есть вариант 3, о котором я не знаю?

1 Ответ

3 голосов
/ 01 июня 2011

Боюсь, нет единственного правильного ответа.Относительные достоинства:

# 1 Хостинг List в пределах UserControl

PRO

  • Проще спроектировать этот элемент управления, т. Е. VisualStudio очень хорошо поддерживает UserControls
  • Вы можете ограничить интерфейс элемента управления, который вы «расширяете», например, если вы хотите отключить некоторые функции ListView,Вы можете сделать это, просто не открывая его.

CONs

  • Вы должны вручную раскрыть функциональность ListView, создав собственныйItemsSource, ItemTemplate свойства и т. Д. Однако вы можете, если хотите, выставить ListView как свойство вашего UserControl.

# 2 Наследование от ListView

PRO

  • Дает немедленную замену плагина при замене существующих ListView экземпляров.
  • Вы не делаетедолжны отражать свойства ListView.

CONs

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

Итак, это действительно зависит от того, чего вы хотите достичь.Лично я бы пошел на (1), если вы хотите существенно изменить API, например, специализируя ListView для очень конкретной цели.Я бы пошел (2), если вы создаете очень универсальное расширение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...