2009-05-02 10 views

答えて

1

リソースディクショナリを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); 

出典:How to read WPF ResourceDictionaries from WinForms

関連する問題