안녕하세요, 반갑습니다.
(눈부심 주의)
위와 같이 2개의 테마를 버튼으로 컨트롤합니다.
궁금한것은 이 방식이 문제가 잇는지에 대해서 입니다.
사용한 방법은 밑에 소스와 같습니다.
// App.xaml 첫 디버깅 시 DarkTheme로 셋팅 됩니다.
<Application >
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/DarkTheme.xaml" /> // DarkTheme 추가
<ResourceDictionary Source="/Style/ToolBox.xaml" /> // 각 Tool(TextBox, ListView)에 대한 Style 지정입니다.
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
// ViewModel
if (IsSetMode)
{
App.Current.Resources.MergedDictionaries.Add(Light); //LightTheme
App.Current.Resources.MergedDictionaries.Add(ToolBox); //ToolBox.xaml
IsSetMode = false;
}
else if (!IsSetMode)
{
App.Current.Resources.MergedDictionaries.Remove(ToolBox); //ToolBox.xaml
App.Current.Resources.MergedDictionaries.Remove(Light); //LightTheme
IsSetMode = true;
}
[ToolBox.xaml]
버튼 클릭 시 ViewModel에서 위의 코드를 실행합니다.
ToolBox.xaml에서 Theme의 일부분을 상속받고 View에 뿌려줍니다.
→ BasedOn ="{StaticResource ...}"
로 받기 때문에 테마 변경 시 적용이 안됩니다.
그래서 한 것이 위에 소스처럼 Light 테마에 대한 ToolBox.xaml를 만든 후 올렸다 내렸다 하는 것입니다.