【发布时间】:2018-07-19 11:00:18
【问题描述】:
我在App.xaml 文件中声明了一个ResourceDictionary,如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/DefaultSkin.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
问题是,当我尝试在启动时加载不同的皮肤时(使用App.xaml.cs 构造函数加载最后使用的ResourceDictionary 皮肤)我发现Application.Resources 中设置的ResourceDictionary 覆盖了这个并恢复到 DefaultSkin.xaml 文件 - 即使我在选择所需的皮肤之前使用 Application.Current.Resources.MergedDictionaries.Clear();。
当我从 Application.Resources 中删除 ResourceDictionary 时,我的应用程序运行良好 - 但是所有 xaml 引用在设计时都丢失了。如何在设计时保留此参考,但在运行时将其删除,然后它才能覆盖我的皮肤选择?
【问题讨论】:
-
可能在启动时加载不同的皮肤,而不是在 ctor 中,而是在
Startup事件处理程序中? -
谢谢,但是如何创建
Startup事件处理程序?
标签: c# wpf resourcedictionary skinning