Я разработал приложение, которое позволяет пользователю переключаться между темами. Я делаю это путем включения файла xaml в качестве ресурса в мой проект и использования следующего кода:
MainTheme.ThemeUri = new Uri("SilverlightApplication1;component/Themes/[ThemeName]/Theme.xaml", UriKind.Relative);
Это работало хорошо, пока я не нашел следующие темы: http://timheuer.com/blog/archive/2010/05/17/silverlight-4-tools-released-and-new-application-templates.aspx
Разница в том, что эти темы состоят из нескольких файлов. Поэтому я создал файл Theme.xaml, который включает в себя только MergedDictionaries, так что я все еще мог использовать приведенный выше код. Это файл Theme.xaml для темы Cosmopolitan.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CoreStyles.xaml"/>
<ResourceDictionary Source="SDKStyles.xaml"/>
<ResourceDictionary Source="Styles.xaml"/>
<ResourceDictionary Source="ToolkitStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Однако, когда я запускаю код c # выше, я получаю следующее исключение:
System.Windows.Markup.XamlParseException: Failed to assign to property 'System.Windows.ResourceDictionary.Source'.
Просто чтобы прояснить, использование метода MergedDictionaries работает, когда я установил его в своем App.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/Cosmopolitan/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Что я делаю не так?
Спасибо!