У меня есть ResourceDictionary в resource / Resources.xaml.Тем не менее, я не знаю заранее, как будет называться имя .dll.Есть ли способ генерировать URI для ResourceDictionary на лету?Первоначально он был загружен с использованием
var myResourceDictionary = new ResourceDictionary();
var uri = new Uri("/xxx;component/resource/Resources.xaml", UriKind.Relative);
myResourceDictionary.Source = uri;
Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary);
, где xxx может измениться на yyy, если я включу файл в другой проект.
Обновление. Поворотом ресурса.xaml со страницы в встроенный словарь, я смог загрузить его, используя
// http://chris.59north.com/post/Storing-application-wide-styles-in-external-files-aka-The-ExternalStyleManager.aspx
Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
foreach (var key in assembly.GetManifestResourceNames())
{
if (key.ToLower().EndsWith(".resources.xaml"))
{
Stream resource = assembly.GetManifestResourceStream(key);
ResourceDictionary dict = XamlReader.Load(resource) as ResourceDictionary;
Application.Current.Resources.MergedDictionaries.Add(dict);
}
}
Но это немного неудовлетворительно.Тем не менее, было бы интересно узнать, есть ли способ сохранить его как страницу и загрузить его.