Подтвердить что ты не робот

Получить все файлы XAML из скомпилированной DLL

Я хочу загрузить во время выполнения внешние стили XAML из сторонних библиотек (DLL). Как в этом уроке они используют:

Application.LoadComponent(new Uri("/WpfSkinSample;component/Skins/" + name + ".xaml", UriKind.Relative)) as ResourceDictionary;

загрузить новый стиль.

Но я не знаю имен XAML из сторонней библиотеки, поэтому я ищу способ получить их и загрузить в свое приложение.

Спасибо за любую помощь.

Изменить: Благодаря Andyp, я сделал следующую работу:

    public void LoadXaml(String Assemblypath)
    {
        var assembly = Assembly.LoadFile(Assemblypath);
        var stream = assembly.GetManifestResourceStream(assembly.GetName().Name + ".g.resources");
        var resourceReader = new ResourceReader(stream);

        foreach (DictionaryEntry resource in resourceReader)
        {
            if (new FileInfo(resource.Key.ToString()).Extension.Equals(".baml"))
            {
                Uri uri = new Uri("/" + assembly.GetName().Name + ";component/" + resource.Key.ToString().Replace(".baml", ".xaml"), UriKind.Relative);
                ResourceDictionary skin = Application.LoadComponent(uri) as ResourceDictionary;
                this.Resources.MergedDictionaries.Add(skin);
            }
        }
    }
4b9b3361

Ответ 1

Вы можете перечислить встроенные ресурсы сборки следующим образом:

var assembly = Assembly.LoadFile("pathToYourAssembly");
var stream = assembly.GetManifestResourceStream(assembly.GetName().Name + ".g.resources");
var resourceReader = new ResourceReader(stream);

foreach (DictionaryEntry resource in resourceReader)
    Console.WriteLine(resource.Key);