Tôi đã phát triển một ứng dụng cho phép người dùng chuyển đổi giữa các chủ đề. Tôi đang làm điều này bằng cách bao gồm các tập tin XAML như một nguồn lực trong dự án của tôi và sử dụng đoạn mã sau:Sử dụng từ điển tài nguyên làm chủ đề trong Silverlight
MainTheme.ThemeUri = new Uri("SilverlightApplication1;component/Themes/[ThemeName]/Theme.xaml", UriKind.Relative);
này làm việc tốt, cho đến khi tôi tìm thấy các chủ đề này: http://timheuer.com/blog/archive/2010/05/17/silverlight-4-tools-released-and-new-application-templates.aspx
Sự khác biệt là các chủ đề này bao gồm nhiều tệp. Vì vậy, tôi đã tạo một tệp Theme.xaml chỉ bao gồm MergedDictionaries vì vậy tôi vẫn có thể sử dụng mã ở trên. Đây là tập tin Theme.xaml cho chủ đề 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>
Tuy nhiên, khi tôi chạy đoạn code C# trên tôi nhận được ngoại lệ sau đây:
System.Windows.Markup.XamlParseException: Failed to assign to property 'System.Windows.ResourceDictionary.Source'.
Chỉ cần được rõ ràng, sử dụng phương pháp MergedDictionaries làm việc khi tôi đặt nó trong App.xaml tôi:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/Cosmopolitan/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Tôi đang làm gì sai?
Cảm ơn!
Thiết đường dẫn tuyệt đối trong tập tin Theme.xaml tôi cũng không hoạt động :( – SaphuA
Tôi đã có một vấn đề tương tự và nguyên nhân đã sử dụng dấu gạch chéo ngược (\) thay vì dấu gạch chéo (/) khi tham chiếu tệp. Trình phân tích cú pháp xaml trong VS có thể giải quyết vị trí, nhưng tại thời điểm chạy, lỗi được tạo. –