質問

WPFのローカリゼーション目的のために、アセンブリ内のすべてのリソースマネージャーをループしたいと思います。

これをやりたい理由は、翻訳XAMLマークアップ拡張機能があるからです。このマークアップ拡張機能は、完全に適格な名前空間とアセンブリ名を使用して、ResourceManagerをインスタンス化する必要があります。

デフォルトのアセンブリは、XAMLファイルが位置するアセンブリであり、次のように取得できます。

var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;
var root = rootObjectProvider.RootObject;
var assembly = ass = Assembly.GetAssembly(root.GetType());

相対パスが与えられた場合、デフォルトのパスを準備する必要がありますが、これはアセンブリではなくVSのものです。ほとんどのアセンブリはデフォルトの名前空間と同じ名前を持っていますが、これは必ずしもそうではありません。そのため、アセンブリ内のすべてのリソースマネージャーをループし、名前空間の最後の部分とマークアップ拡張機能に与えられた辞書パスと一致させたいと思います。

役に立ちましたか?

解決

さて、私はそれをする方法を見つけました:

var resources = assembly.GetManifestResourceNames();

操作は非常に費用がかかりますが、次の課題:リソースマネージャーをリソースマネージャーにロードすること。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top