Wpf 如何公开xaml属性?

Wpf 如何公开xaml属性?,wpf,dependency-properties,attached-properties,attachedbehaviors,dependencyobject,Wpf,Dependency Properties,Attached Properties,Attachedbehaviors,Dependencyobject,我创建了一个ComboBox子类并添加了我的功能 现在我想公开文本框的外部属性,例如: <a:MyComboBox SpellCheck.IsEnabled="True" TextBox.SelectedText="{Binding X}" /> 这是可能的,我可能没有选择错误的特定属性,但我想你明白我的意思 这可能吗? 我必须单独创建所有属性吗?这在XAML中是不可能的。XAML不允许您使用您描述的属性路径语法来处理单个成员的子属性。(对于某些可继承属性(如背景和字体大小)也

我创建了一个ComboBox子类并添加了我的功能

现在我想公开文本框的外部属性,例如:

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

这是可能的,我可能没有选择错误的特定属性,但我想你明白我的意思

这可能吗?

我必须单独创建所有属性吗?

这在XAML中是不可能的。XAML不允许您使用您描述的属性路径语法来处理单个成员的子属性。(对于某些可继承属性(如背景和字体大小)也可以使用类似的方式,但使用继承机制(影响所有包含的控件)而不是寻址特定的子元素,并且无论如何对TextBox.SelectedText不起作用。)

因此,是的,您需要在mymbobox类上声明自定义属性,以显示需要从mymbobox外部访问的文本框的功能。从好的方面来说,这是一个很好的封装规则:记住,未来的开发人员可能会将一个自定义模板应用到您的MyComboBox,该模板不包含TextBox(或者该成员未命名为TextBox,或者名为TextBox的成员实际上是一个RichTextEditor,而不是一个普通的TextBox…)。显式属性确保MyComboBox清楚地定义了这样一个模板需要遵守的行为和状态,并让模板决定如何实现这一点,而不是让模板的作者总是被限制公开一个文本框。

你说的“文本框”是什么意思?您的子类“默认模板”在某个地方使用了一个文本框,您希望绑定该文本框“SelectedText”——对吗?