67

静的プロパティへの WPF バインディングに関するいくつかの問題に直面しています。私のアプリケーションには、ThisAddInへの静的プロパティを含むGlobalsというクラスがあります。このオブジェクトを使用すると、基本的にバインディングで使用したいユーザー プロパティにアクセスできます。したがって、私の XAML は次のようになります。

<TextBlock Text="{Binding Path=User.Name
                   , Source={x:Static Member=s:Globals.ThisAddIn}}" />

名前空間sは、次の行で先頭に宣言されています。

xmlns:s="clr-namespace:ConsoleApplication16.Model"

XAML で静的なプロパティを参照する方法について、さまざまなアプローチを見つけましたが、これを除いてどれも機能しませんでした。これは、私にとって最も論理的でもあるようです。私が見つけたいくつかのサンプルは、Path または Member をまったく使用していませんでした。

いくつかのテストの後、これを行う正しい方法を見つけました。「x:Static Member」を使用して、使用するクラスと静的プロパティを定義し、パスは、通常のバインディングと同じように、このオブジェクト内の正しいプロパティを定義します.

このソリューションは問題なくコンパイルされますが、XAMLParseException がポップアップし、StaticExtension 値を列挙型、静的フィールド、または静的プロパティに解決できないことが直接通知されます。

4

2 に答える 2