繁体   English   中英

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

[英]How to remove App.xaml ResourceDictionary at startup?

我在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.csOnStartup方法:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM