2013-02-18 11 views
9

私はwin8アプリケーションを作成しており、組み込みのリソース管理システム:reswファイルとx:UidタグをXAMLコードに使用しています。リソースのローカリゼーション:xの使用:別のアセンブリのリソースを参照するUid

だから私はのは、そのようなTextBoxを言わせて作成します。

<TextBlock Style="{StaticResource HeaderTextStyle}" x:Uid="ResourceTest"/> 

私はResourceTest.Textエントリと私のアセンブリ内の対応するリソースファイルを作成し、それが正常に動作します:適切なテキストは、実行時に表示されます。

ここで、すべてのresxファイルを保守性のために別のC#ライブラリに移動したいと思います。そこで、リソースファイルを新しいプロジェクトに入れ、この新しいアセンブリをメインアセンブリから参照します。

しかしこれにより、前の構文が失敗します(テキストは表示されません)。私は、プログラム(ResourcesLibraryと呼ばれる)側アセンブリの内側から次のコードを使用してリソース値を取得する場合

はしかし、私は正しく文字列を取得:

static ResourceLoader resourceLoader = null; 
public static string GetString(string resourceName) 
{ 
    if (resourceLoader == null) 
     resourceLoader = new ResourceLoader ("ResourcesLibrary/Resources"); 
    return resourceLoader.GetString (resourceName); 
} 

扱うとき、私はx:Uidメカニズムを有効にするにはどうすればよいですアセンブリ外のリソースを使用していますか?

ResourcesLibrary/Resources/ResourceTestのようなx:Uidではいくつか試しましたが、運はありません。

+0

質問をしてから解決策を見つけましたか?私は今同じ問題に直面している。 –

+0

いいえ、私は同じアセンブリを使用するに戻った、調査する時間がなかった。 – Mic

+2

実際にreswリソースファイルのコードビハインドクラスを生成するために、このツールを使用して終了しました。reswが別のアセンブリに含まれていても魅力的です:http://reswcodegen.codeplex.com/ –

答えて

10

を述べたように、彼らがアクセスすることができます私は長い間同じ問題を抱えていました。しかし、少しテストした後、私はXAMLコードにリソースの全体のパスを書いて解決しました。このような

何か:

<TextBlock x:Uid="/ResourcesLibrary/Resources/ResourceTest" /> 

残念ながら、この答えは非常に遅れて来たが、それは他の人々を助けることができることがあります。

+1

帰ってきてくれとありがとうこの。 –

0

リソースが.resxファイルで管理されている場合は、x:Uidを使用することはできません。

あなたが.reswファイルを使用する場合は、彼らが内に存在しているものは何でも組み立てた文字列にアクセスすることができます。

あなたはこの「ResourcesLibrary /リソース/ ResourceTest」のようなあなたの質問に

関連する問題