-2

フレームワーク全体のいくつかのクラスにいくつかのアタッチされたプロパティがあります。これらはすべて、を使用して単一のxml名前空間にマップされ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 に答える