Я ищу хороший способ упростить и организовать сложный пользовательский элемент управления WPF.
Моя первая мысль - разделить его на два более простых элемента управления. Для пояснения я назову эти SimpleControl и AdvancedControl.
SimpleControl содержит все основные функции и является чрезвычайно многоразовым.
AdvancedControl зависит от SimpleControl и содержит обработку ввода и дополнительные функции. AdvancedControl менее пригоден для повторного использования, чем SimpleControl, поскольку он содержит дополнительные элементы пользовательского интерфейса и специфичную для приложения обработку ввода.
Визуальный шаблон для AdvancedControl - это то, что определяет зависимость от SimpleControl. Когда вызывается OnApplyTemplate, он кэширует ссылку на встроенный SimpleControl.
Основная проблема с этим подходом состоит в том, что все свойства и методы, которые доступны в SimpleControl, я также хочу, чтобы они были доступны в AdvancedControl. Это означает большую работу по реализации тех же свойств и методов зависимости в AdvancedControl, а затем просто переадресацию их в SimpleControl. Это не выглядит особенно элегантно.
Я также думал о наследовании AdvancedControl от SimpleControl, но думаю, что в этом случае мне придется полностью переопределить визуальный шаблон для SimpleControl, а не просто повторно использовать существующий.
Может кто-нибудь придумать лучший способ выделить сложный пользовательский элемент управления WPF?