2009-09-30 61 views
9

我正在使用WPF工具包中的RibbonControl。它有Office蓝色,黑色和银色主题。但是,这个主题并不适用于窗口中的控件。有没有解决方案?为WPF应用程序应用Office 2007主题

我aplying主题像

<ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Black.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

但控制像按钮,文本框不chaged。

回答

3

您需要单独的资源字典来为各种控件提供WPF样式。我通过抽取各种应用程序中的颜色来创建我自己的。这真的不是很难做到,而且它让我花了几个小时。

如果您正在寻找快速简单的解决方案,请尝试使用WPF Themes。局蓝色主题看起来非常像Office 2007蓝色。

+0

你是绝对正确的。 – Sauron 2009-10-03 15:17:09

+0

我有一个持续的问题:在使用WPF主题之后,我们如何将主题重置为系统/操作系统主题? – 2010-10-13 03:34:37

0

你是如何应用这个主题的?你是否在你的app.xaml(如下所示)中应用它?

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/PresentationFramework.Aero,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" /> 
    <ResourceDictionary Source="/WPFToolkit;V3.5.31016.1;component/DataGrid/Themes/Aero.NormalColor.xaml" /> 
</ResourceDictionary.MergedDictionaries> 
0

我一直在尝试重用RibbonControlsLibrary.dll中定义的资源,以便可以将类似的样式应用于我的应用程序的其余部分。经过搜索和摆弄的时间,这是我意识到:

<Rectangle Stroke="Black" StrokeThickness="2" RadiusX="6" RadiusY="6" HorizontalAlignment="Stretch" Width="Auto" Grid.RowSpan="3" Grid.ColumnSpan="3" 
Fill="{DynamicResource {x:Static r:RibbonSkinResources.RibbonBackgroundBrushKey}}" /> 

我看在资源字典什么键上心了,看着这篇文章: How do I get the actual resource from a ComponentResourceKey?

这种方法允许我可以创建与选定的色带外观具有相同外观和风格的其他样式。改变皮肤会改变应用程序的其他方面,如按钮等...