gpt4 book ai didi

c# - 如何在启动时删除 App.xaml ResourceDictionary?

转载 作者:行者123 更新时间:2023-11-30 20:25:36 24 4
gpt4 key购买 nike

我在 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 引用在设计时都丢失了。我如何才能在设计时保留此引用,但在运行时将其删除,然后它才能覆盖我的皮肤选择?

最佳答案

覆盖 App.xaml.cs 中的 OnStartup 方法:

public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Resources.MergedDictionaries.Clear();
//...
}
}

如果你想清除构造函数中的MergedDictionaries,你应该在调用InitializeComponent()之后进行:

public App()
{
InitializeComponent();
Resources.MergedDictionaries.Clear();
}

关于c# - 如何在启动时删除 App.xaml ResourceDictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51420960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com