XAML无类附加属性

时间:2012-12-03 22:22:23

标签: wpf xaml dependency-properties

在我的框架中,我在几个类中有几个附加属性。所有这些都使用XmlnsDefinitionAttribute映射到单个xml命名空间。我注意到如果我声明一些这些附加属性而不引用类名(实际包含该属性的类,我得到编译时错误:

The property 'XXX' does not exist in XML namespace 'YYY'

为了更好地解释,当我让FocusHelper类具有IsFocused附加属性时,会发生这种情况,但尝试在XAML中使用它,如下所示:

<CheckBox my:IsFocused="true"/>

注意我指定了xml命名空间(我已经正确声明了),但没有指定类名。

我的问题是:

有没有办法实现这个目标?错误提示我有一种方法可以定义properties inside namespaces directly。这甚至可能吗?

1 个答案:

答案 0 :(得分:3)

这不是XAML问题,这是一个C#“问题”。意思是,你不能在C#中拥有“全局”属性。它必须在一个班级内。

C#中没有“全球”概念。

为了获得你想要的语法,你必须能够全局声明一个属性(即在类的上下文之外)并且在C#中是不可能的

这就是框架附加属性在它们之前也有类名的原因(Grid.Column,Canvas.Top)

对于Framework Attached属性(Grid.Column,Canvas.Top等...),您不必指定命名空间,因为它们位于“默认”命名空间

xmlns=""

而不是命名空间

xmlns:my=""