web-dev-qa-db-ja.com

StaticExtension値を解決できません

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

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

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

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

XAMLで静的プロパティを参照する方法については、さまざまな方法が見つかりましたが、この方法を除いてどれも機能しませんでした。私が見つけたいくつかのサンプルは、パスまたはメンバーをまったく使用していません。

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

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

56
Roper

Globals.ThisAddInは公開されています。

また、リソースファイルを使用している場合にも、アクセス修飾子がPublicに設定されていることを確認する必要があります。

enter image description here

84
Chuck Rostance

出力ライブラリプロジェクトでは、Resources.resxファイルのジェネレーターがデフォルトでResXFileGodeGeneratorではなくPublicResXFileCodeGeneratorとして変更されていることを確認する必要があります。

以下を...に置き換えます

Not public resource

これ

correct public resource

32
Dennis Zhang