Переключение между темами оформления в паттерне MVVM
Задача: в приложении предполагается несколько схем оформления, нужно настроить переключение между ними, придерживаясь паттерна MVVM. Изначальный план был сделать несколько отдельных ResourceDictionary в отдельных файлах, а потом переключаться между ними по триггеру. Примерно как-то вот так я это представлял :
<Window.Resources>
<ResourceDictionary x:Key="DayStyleDictionary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/StyleDictionaryDay.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<ResourceDictionary x:Key="NightStyleDictionary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/StyleDictionaryNight.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Window.Triggers>
<DataTrigger Binding="{Binding FlagsManager.AppState}" Value="Day">
<Setter Property="Resources" Value="{StaticResource DayStyleDictionary}" />
</DataTrigger>
<DataTrigger Binding="{Binding FlagsManager.AppState}" Value="Night">
<Setter Property="Resources" Value="{StaticResource NightStyleDictionary}" />
</DataTrigger>
</Window.Triggers>
Но похоже так сделать невозможно? Как правильно организовать переключение между темами в рамках паттерна MVVM?
Нашёл вариант с вписыванием ResourceDictionary в Application.Resources и перезаписывание его значения через метод вызываемый в сеттере свойства отвечающего за то, какая тема сейчас выбрана. В принципе вариант рабочий, но выглядит не очень элегантно. Это хорошее решение или же есть какой-то ещё вариант?