Применение тем Office 2007 для приложения WPF

Я использую RibbonControl из набора инструментов WPF. Он имеет темы Office Blue, Black и Silver. Но тема не распространяется на элементы управления в окне. Есть ли какое-нибудь решение для этого?

Я применяю тему, как

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

Но элементы управления похожи на кнопку, текстовое поле не меняется.


person Sauron    schedule 30.09.2009    source источник


Ответы (3)


Вам нужен отдельный словарь ресурсов для предоставления стилей WPF различным элементам управления. Я создал свой собственный, попробовав цвета в разных приложениях. На самом деле это не очень сложно сделать, и это заняло у меня всего пару часов.

Если вы ищете быстрое и простое решение, попробуйте темы WPF< /а>. Тема Bureau Blue очень похожа на синюю тему Office 2007.

person David Veeneman    schedule 02.10.2009
comment
У меня есть постоянный вопрос: после использования темы WPF, как мы можем сбросить тему на тему системы/ОС? - person Nam G VU; 13.10.2010

Как вы пытаетесь применить тему? Вы применяете его в своем 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>
person viggity    schedule 30.09.2009

Я пытался повторно использовать ресурсы, определенные в 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?

Этот метод позволяет мне создавать другие стили, которые будут выглядеть так же, как выбранная оболочка ленты. Изменение скина изменит стиль других аспектов приложения, таких как кнопки и т. д.

person Luke Machowski    schedule 10.03.2010