2

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

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

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

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

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

+0

Что вы подразумеваете под «TextBox»? Ваш шаблон подкласса по умолчанию использует текстовое поле где-то, и вы хотите связать этот TextBox 'SelectedText - это правильно? – itowlson

+0

Да, мой дорогой друг – Shimmy

ответ

1

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

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