静的プロパティへのWPFバインディングに関する問題があります。私のアプリケーションにはというクラスがあり、グローバルはという静的なというプロパティからのThisAddInのプロパティを含んでいます。このオブジェクトは、基本的に私がバインディングで使用したいものであるUserプロパティにアクセスすることを可能にします。だから、私のXAMLは次のようになります。私はを参照してくださいする方法の異なるアプローチのトンを見つけStaticExtensionの値を解決できません。
xmlns:s="clr-namespace:ConsoleApplication16.Model"
:
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
名前空間のは、次の行で先頭で宣言されましたXAMLのstaticプロパティですが、これ以外のものは動作しません。これも私にとって最も論理的なようです。私が見つけたいくつかのサンプルは、パスまたはメンバーをまったく使用しませんでした。
いくつかのテストの結果、適切な方法を見つけたので、「x:静的メンバー」を使用してクラスと静的プロパティを定義し、Pathはこのオブジェクトの中の正しいプロパティをこのオブジェクトの中に定義します通常のバインディングが行います。
このソリューションは何の不満なくコンパイルされますが、StaticExtension値を列挙型、静的フィールドまたは静的プロパティに解決できないことをXAMLParseExceptionが直接ポップアップして表示します。
それが例外をスローした場合はどのように正確ということは、 '右way'のですか? –
また、 'Path ='と 'Member ='を削除できるのは、関連するプロパティを設定するそれぞれのコンストラクタを呼び出すためです。 –
私は通常、{Binding Source = {x:Static local:MyStaticClass.SomeStaticProperty.PropertyName} 'を使って静的クラス/プロパティにバインドします。あなたのプロパティに 'get /' set'アセッサーがあることを確認してください。たとえば、 'public string PropertyName {get;セット; } 'public string PropertyName;の代わりに'} '@ – Rachel