Как выставить свойства xaml? - PullRequest
2 голосов
/ 12 февраля 2010

Я создал подкласс ComboBox и добавил свою функциональность.

Теперь я хочу раскрыть внешние свойства TextBox, например:

<a:MyComboBox SpellCheck.IsEnabled="True" TextBox.SelectedText="{Binding X}" />

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

Возможно ли это?
Нужно ли создавать все свойства индивидуально?

1 Ответ

1 голос
/ 12 февраля 2010

Это невозможно в XAML. XAML не позволяет вам обращаться к подчиненным свойствам отдельных членов, используя синтаксис пути свойств, подобный тому, который вы описали. (Нечто похожее возможно для определенных наследуемых свойств, таких как фоны и размеры шрифтов, но при этом используется механизм наследования - затрагивающий все содержащиеся элементы управления - вместо адресации конкретного подэлемента, и не будет работать для TextBox.SelectedText в любом случае.)

Так что да, вам нужно будет объявить пользовательские свойства в классе MyComboBox, чтобы отобразить функции TextBox, к которым вам нужно получить доступ из-за пределов MyComboBox. С другой стороны, это хорошая дисциплина для инкапсуляции: помните, что будущий разработчик может применить пользовательский шаблон к MyComboBox, который не содержит TextBox (или элемент не называется TextBox, или элемент с именем TextBox на самом деле является RichTextEditor вместо простого TextBox ...). Явные свойства гарантируют, что MyComboBox четко определяет, какое поведение и состояние должен соблюдаться таким шаблоном, и позволяет шаблону решать, как его реализовать, а не ограничивать автора шаблона всегда показом TextBox.

...