Ich habe eine Anwendung entwickelt, mit der der Benutzer zwischen Themen wechseln kann. Ich dies tun, indem Sie die XAML-Datei als Ressource in meinem Projekt einschließlich und mit dem folgenden Code:Verwenden Sie ein Ressource-Wörterbuch als Thema in Silverlight
MainTheme.ThemeUri = new Uri("SilverlightApplication1;component/Themes/[ThemeName]/Theme.xaml", UriKind.Relative);
Das funktionierte gut, bis ich diese Themen gefunden: http://timheuer.com/blog/archive/2010/05/17/silverlight-4-tools-released-and-new-application-templates.aspx
Der Unterschied besteht darin, dass diese Themen bestehen aus mehreren Dateien. Also habe ich eine Theme.xaml-Datei erstellt, die nur MergedDictionaries enthält, damit ich den obigen Code immer noch verwenden kann. Dies ist die Theme.xaml-Datei für das Cosmopolitan-Thema.
<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>
Allerdings, wenn ich die C# Code ausführen oben ich die folgende Ausnahme erhalten:
System.Windows.Markup.XamlParseException: Failed to assign to property 'System.Windows.ResourceDictionary.Source'.
Nur klar zu sein, die MergedDictionaries Methode funktioniert, wenn ich stellte es in meiner App.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/Cosmopolitan/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Was mache ich falsch?
Danke!
Einstellung absolute Pfade in meiner Theme.xaml Datei wie funktioniert auch nicht :( – SaphuA
hatte ich ein ähnliches Problem und die Ursache war ein umgekehrter Schrägstrich (\) anstelle von Schrägstrich (/) beim Verweisen auf die Datei.Der XAML-Parser in VS konnte den Speicherort auflösen, aber zur Laufzeit wurde ein Fehler generiert.Hoffentlich hilft dies jemand anderem out. –