为WPF应用程序应用Office 2007主题

9

我正在使用WPF工具包中的RibbonControl。它有Office Blue、Black和Silver三种主题。但是这个主题并没有应用到窗口中的控件上。有没有解决方案呢?

我是这样应用主题的:

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

但是按钮和文本框等控件没有改变。

3个回答

3
你需要一个单独的资源字典来为各种控件提供WPF样式。我创建了自己的,通过采样各种应用程序中的颜色。这真的不难做,而且只花了我几个小时。
如果你正在寻找一个快速简便的解决方案,请尝试WPF主题。局部蓝色主题看起来非常像Office 2007的蓝色。

我有一个继续的问题:在使用WPF主题后,我们如何将主题重置为系统/操作系统主题? - Nam G VU

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}}" />

我是通过查看资源字典中的键以及阅读这篇文章如何从ComponentResourceKey获取实际资源?来得到这个想法的。

这种方法使我能够创建其他样式,其外观与所选的功能区皮肤相同。更改皮肤将重新设计应用程序的其他方面,例如按钮等...


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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接