Читать WPF ResourceDictionaries из WinForms - PullRequest
1 голос
/ 02 мая 2009

Можно ли читать WPF ResourceDictionaries из WinForms? Если да, то как?

1 Ответ

1 голос
/ 02 мая 2009

Когда вы добавляете словари ресурсов в проект WPF, для действия сборки автоматически устанавливается значение Page. Это означает, что компилятор генерирует поток 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);

Источник: Как читать словари ресурсов WPF из WinForms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...