Что является хорошим способом выделить и упростить сложный пользовательский элемент управления WPF? - PullRequest
4 голосов
/ 30 марта 2010

Я ищу хороший способ упростить и организовать сложный пользовательский элемент управления WPF.

Моя первая мысль - разделить его на два более простых элемента управления. Для пояснения я назову эти SimpleControl и AdvancedControl.

SimpleControl содержит все основные функции и является чрезвычайно многоразовым.

AdvancedControl зависит от SimpleControl и содержит обработку ввода и дополнительные функции. AdvancedControl менее пригоден для повторного использования, чем SimpleControl, поскольку он содержит дополнительные элементы пользовательского интерфейса и специфичную для приложения обработку ввода.

Визуальный шаблон для AdvancedControl - это то, что определяет зависимость от SimpleControl. Когда вызывается OnApplyTemplate, он кэширует ссылку на встроенный SimpleControl.

Основная проблема с этим подходом состоит в том, что все свойства и методы, которые доступны в SimpleControl, я также хочу, чтобы они были доступны в AdvancedControl. Это означает большую работу по реализации тех же свойств и методов зависимости в AdvancedControl, а затем просто переадресацию их в SimpleControl. Это не выглядит особенно элегантно.

Я также думал о наследовании AdvancedControl от SimpleControl, но думаю, что в этом случае мне придется полностью переопределить визуальный шаблон для SimpleControl, а не просто повторно использовать существующий.

Может кто-нибудь придумать лучший способ выделить сложный пользовательский элемент управления WPF?

1 Ответ

1 голос
/ 30 марта 2010

Вы можете наследовать стиль:

<Style TargetType="{x:Type AdvancedControl}" BasedOn="{x:Type SimpleControl}" />
...