在我的框架中,我在几个类中有几个附加属性。所有这些都使用XmlnsDefinitionAttribute
映射到单个xml命名空间。我注意到如果我声明一些这些附加属性而不引用类名(实际包含该属性的类,我得到编译时错误:
The property 'XXX' does not exist in XML namespace 'YYY'
为了更好地解释,当我让FocusHelper
类具有IsFocused
附加属性时,会发生这种情况,但尝试在XAML中使用它,如下所示:
<CheckBox my:IsFocused="true"/>
。
注意我指定了xml命名空间(我已经正确声明了),但没有指定类名。
我的问题是:
有没有办法实现这个目标?错误提示我有一种方法可以定义properties inside namespaces directly
。这甚至可能吗?
答案 0 :(得分:3)
这不是XAML问题,这是一个C#“问题”。意思是,你不能在C#中拥有“全局”属性。它必须在一个班级内。
C#中没有“全球”概念。
为了获得你想要的语法,你必须能够全局声明一个属性(即在类的上下文之外)并且在C#中是不可能的
这就是框架附加属性在它们之前也有类名的原因(Grid.Column,Canvas.Top)
对于Framework Attached属性(Grid.Column,Canvas.Top等...),您不必指定命名空间,因为它们位于“默认”命名空间
xmlns=""
而不是命名空间
xmlns:my=""