Как удалить App.xaml ResourceDictionary при запуске?
У меня есть ResourceDictionary
объявлено в App.xaml
файл как ниже:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/DefaultSkin.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Проблема заключается в том, что при попытке загрузить другой скин при запуске (используя App.xaml.cs
конструктор для загрузки последнего использованного ResourceDictionary
кожа) Я считаю, что ResourceDictionary
установить в Application.Resources
переопределяет это и возвращается к файлу DefaultSkin.xaml - даже когда я использую Application.Current.Resources.MergedDictionaries.Clear();
перед выбором необходимого скина.
Мое приложение работает отлично, когда я удаляю ResourceDictionary
от Application.Resources
- но тогда все ссылки на xaml теряются во время разработки. Как я могу сохранить эту ссылку во время разработки, но удалить ее во время выполнения, прежде чем она сможет отменить мой выбор скина?
1 ответ
Переопределить OnStartup
метод в App.xaml.cs
:
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();
}