2012-06-22 58 views
4

我想在WPF中实现ASP.Net类型的主题。用户可以选择各种预定义的主题,并可以切换到另一个主题。如何在wpf中实现主题

为了实现这个,我尝试了为每个主题创建不同的resourcedictionary,并用key存储所需的样式。所有主题中的按键集合都是相同的,但其定义各不相同。

我使用下面的代码来切换主题上点击:

var theme = Application.LoadComponent(uri) as ResourceDictionary; 
Application.Current.Resources.MergedDictionaries.Clear(); 
Application.Current.Resources.MergedDictionaries.Add(theme); 

在所有页/用户控件/窗口我已经设置静态资源和应用相应的键。 当我切换到另一个主题时,它仅在UI上的下一个事件之后应用

如果我将更改StaticResource设置为DynamicResource,则立即应用它。

请分享你的想法来实现这与StaticResource?

回答

0

下载预定义的主题不幸的是,你不能用静态资源实现这一目标。使用StaticResource的控件needs to be reloaded after switching to another Theme为要应用的新资源。

您可能想要创建功能以在更改主题后重新加载当前页面。