Я хочу создать пользовательский элемент управления, который расширяет встроенный элемент управления и затем имеет шаблон, который оборачивает этот элемент управления в контейнер?
Класс C #:
class ExtraBorderTextBox : TextBox {}
Xaml:
<ControlTemplate>
<Border>
<TextBox/>
</Border>
</ControlTemplate>
Это не работает, потому что TextBox
в шаблоне элемента управления не является моим пользовательским элементом управления, это второй экземпляр.
Мне нужен доступ к свойствам исобытия в TextBox
, имеющие другого родителя, не имеют смысла, мне пришлось бы повторить все это в моем классе.
Это упрощенный пример;Представьте, что Border
заменяется на ContentControl
, который имеет 50-строчный шаблон управления для себя.Я предполагаю, что хочу что-то вроде ContentPresenter
(как у меня в ContentControl
), но нет ничего похожего на «ControlPresenter».Правильно?Я что-то упустил, или я застрял с репликацией моего элемента управления контентом для TextBox или с репликацией поведения и презентации TextBox
для моего элемента управления контентом?
Спасибо.
Обновление: естьответ здесь, который делает то, что я хочу, то есть скопировать шаблон по умолчанию для System.Windows.Controls.TextBox.Это будет делать то, что я хочу;Я могу вставить свой контейнер в это.Я надеялся, что WPF предоставит способ, более удобный для выполнения, для чего-то вроде этого, что-то вроде шаблона для украшения / декоратора.
Есть ли способ как-то улучшить это?Будет ли использование чего-то вроде Expression Blend сделать это так, чтобы мне не пришлось вручную редактировать XAML, вставленный с веб-страницы?