如何公开xaml属性?

时间:2010-02-11 22:11:28

标签: wpf dependency-properties attached-properties attachedbehaviors dependencyobject

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

现在我想公开TextBox的外部属性,例如:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

所以,是的,您需要在MyComboBox类上声明自定义属性,以显示您需要从MyComboBox外部访问的TextBox的功能。从好的方面来说,这是封装的良好规则:请记住,未来的开发人员可能会将自定义模板应用于不包含TextBox的MyComboBox(或者该成员未命名为TextBox,或者名为TextBox的成员实际上是RichTextEditor而不是纯文本框...)。显式属性确保MyComboBox清楚地定义了这样的模板需要遵守的行为和状态,并让模板决定如何实现它,而不是模板的作者总是被约束以暴露TextBox。