1
WinFormsからWPF ResourceDictionariesを読み取ることはできますか?はいの場合、どうですか?WinFormsからWPF ResourceDictionariesを読み取る
WinFormsからWPF ResourceDictionariesを読み取ることはできますか?はいの場合、どうですか?WinFormsからWPF ResourceDictionariesを読み取る
リソースディクショナリをWPFプロジェクトに追加すると、ビルドアクションは自動的にページに設定されます。これは、コンパイラがBAMLストリームを生成し、それをアセンブリのリソースに追加することを意味します。
WPFにはBAMLストリームを読み取る機能が組み込まれていますが、APIは公開されていないため、内部メソッドにリフレクションでアクセスする小さなヘルパークラスを作成する必要があります。
public static class BamlReader
{
public static object Load(Stream stream)
{
ParserContext pc = new ParserContext();
MethodInfo loadBamlMethod = typeof(XamlReader).GetMethod("LoadBaml",
BindingFlags.NonPublic | BindingFlags.Static)
return loadBamlMethod.Invoke(null, new object[] { stream, pc, null, false });
}
}
// Usage:
StreamResourceInfo sri = System.Windows.Application.GetResourceStream(
new Uri("/MyAssemblyName;component/MyResourceDict.xaml", UriKind.Relative));
ResourceDictionary resources = (ResourceDictionary)BamlReader.Load(sri.Stream);