-2

我在整个框架的几个类中有几个附加属性。所有这些都使用XmlnsDefinitionAttribute. 我注意到,如果我声明其中一些附加属性而不引用类名(实际包含该属性的类,我会收到编译时错误:

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

为了更好地解释,当我假设一个FocusHelper具有IsFocused附加属性的类时会发生这种情况,但尝试像这样在 XAML 中使用它:

<CheckBox my:IsFocused="true"/>.

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

我的问题是:

有没有办法做到这一点?该错误提示我有一种方法可以定义properties inside namespaces directly. 这甚至可能吗?

4

1 回答 1

3

这不是 XAML 问题,这是 C#“问题”。这意味着,您不能在 C# 中拥有“全局”属性。它必须在一个类中。

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

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

这就是为什么框架附加属性前面也有类名(Grid.Column、Canvas.Top)

对于框架附加属性(Grid.Column、Canvas.Top 等),您不必指定命名空间,因为它们位于“默认”命名空间中

xmlns=""

与您的命名空间相反

xmlns:my=""
于 2012-12-03T23:10:11.227 回答