2

我创建了一个ComboBox子类并添加了我的功能。如何公开xaml属性?

现在我要揭露文本框的外部属性,例如:

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

这是可能的,我也许没有选错了特定的属性,但我想你明白我的意思。

这可能吗?
我是否必须单独创建所有属性?

+0

“TextBox”是什么意思?你的子类的默认模板在某个地方使用了一个TextBox,并且你想要绑定那个TextBox'SelectedText - 是吗? – itowlson 2010-02-11 22:19:27

+0

是的,我亲爱的朋友 – Shimmy 2010-02-11 22:24:54

回答

1

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

所以是的,你需要在MyComboBox类上声明自定义属性来表示你需要从MyComboBox外部访问的TextBox的特性。从好的一面来看,这是一个很好的封装规范:请记住,未来的开发人员可能会将自定义模板应用于不包含TextBox的MyComboBox(或者该成员未命名为TextBox,或者名为TextBox的成员实际上是一个RichTextEditor而不是纯文本框...)。显式属性确保MyComboBox清楚地定义了这种模板需要遵守的行为和状态,并让模板决定如何实现该模板,而不是模板的作者始终受限于公开TextBox。