嗨,我有一个wpf项目,这是我项目的结构
Themes\Basic\Colors\Colors.xaml
Themes\Basic\Colors\ColorsDark.xaml
Themes\Basic\Converters.xaml
Themes\Basic\Geometries.xaml
Themes\Basic\Basic.xaml
和 basic.xaml 包括这些项目
<ResourceDictionary.MergedDictionaries>
<themes:SharedResourceDictionary Source="pack://application:,,,/myproject;component/Themes/Basic/Converters.xaml"/>
<themes:SharedResourceDictionary Source="pack://application:,,,/myproject;component/Themes/Basic/Geometries.xaml"/>
</ResourceDictionary.MergedDictionaries>
和
Themes\Styles\Button.xaml
Themes\Styles\Label.xaml
Themes\Styles\Style.xaml
style.xaml 包括了这些项目
<ResourceDictionary.MergedDictionaries>
<themes:SharedResourceDictionary Source="pack://application:,,,/myproject;component/Themes/Styles/Button.xaml"/>
<themes:SharedResourceDictionary Source="pack://application:,,,/myproject;component/Themes/Styles/Label.xaml"/>
</ResourceDictionary.MergedDictionaries>
和 Themes \ SkinDefault.xaml ===>包括 Colors.xaml
Themes \ SkinDark.xaml ===>包括 ColorsDark.xaml
Themes \ Theme.xaml ===>包括 Style.xaml 和 Basic.xaml
现在我可以在演示中使用我的项目了,
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/myproject;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/myproject;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
我的问题是我无法在运行时更改程序的外观,我使用了以下代码,并且似乎清除了与主题相关的资源
Application.Current.Resources.Source = new Uri($"pack://application:,,,/myproject;component/Themes/Skin{skin}.xaml", UriKind.Absolute);
或这个:
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary{
Source = new Uri($"pack://application:,,,/myproject;component/Themes/Skin{skin}.xaml);
});
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri("pack://application:,,,/myproject;component/Themes/Theme.xaml", UriKind.Absolute)
});
它什么也不做,外壳也不会改变