现在我在我的应用程序中有一些隐式设计的TabItems。我想在我的应用程序中添加“夜间模式”并改变我的风格。我应该怎么做呢?
答案 0 :(得分:2)
您可以使用合并的词典执行此操作。将所有“普通”样式放在字典中,并默认将其添加到应用程序资源中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/Normal.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后你可以删除当前字典并动态加载另一个字典:
private void ChangeStyles()
{
App.Current.Resources.MergedDictionaries.Clear();
StreamResourceInfo resInfo = App.GetResourceStream(new Uri("Styles/NewStyles.xaml", UriKind.Relative));
XDocument xaml = XDocument.Load(resInfo.Stream);
ResourceDictionary resource = XamlReader.Load(xaml.ToString()) as ResourceDictionary;
App.Current.Resources.MergedDictionaries.Add(resource);
}
答案 1 :(得分:1)
阿方索的想法是正确的...... 但是你必须在WPF中这样做。
App.Current.Resources.MergedDictionaries.Clear();
Uri uri = new Uri("/Resources/GlassButton5Night.xaml", UriKind.Relative);
var resDict = Application.LoadComponent(uri) as ResourceDictionary;
App.Current.Resources.MergedDictionaries.Add(resDict);
您确保在合适的级别重置MergedDictionaries