2009-09-30 19 views
9

J'utilise le contrôle RibbonControl de WPF. Il a les thèmes Office Blue, Black et Silver. Mais le thème ne s'applique pas pour les contrôles dans la fenêtre. Y a-t-il une solution pour ça?Application de thèmes Office 2007 pour l'application WPF

Je suis aplying le thème comme

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

Mais les contrôles sont comme bouton, zone de texte ne sont pas chaged.

Répondre

3

Vous avez besoin d'un dictionnaire de ressources distinct pour fournir des styles WPF à divers contrôles. J'ai créé le mien, en échantillonnant les couleurs sur diverses applications. Ce n'est vraiment pas très difficile à faire, et ça m'a pris quelques heures. Si vous cherchez une solution rapide et facile, essayez le WPF Themes. Le thème Bureau Blue ressemble beaucoup à Office 2007 blue.

+0

Vous avez absolument raison. – Sauron

+0

J'ai une question continue: Après avoir utilisé un thème WPF, comment pouvons-nous réinitialiser le thème sur le thème système/OS? –

0

Comment essayez-vous d'appliquer le thème? L'appliquez-vous dans votre app.xaml (quelque chose comme ci-dessous)?

<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

J'ai essayé de réutiliser les ressources qui sont définies dans le RibbonControlsLibrary.dll afin que je puisse appliquer un style similaire au reste de mon application. Après des heures de recherche et tripoter, voici ce que j'ai réalisé:

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

J'ai eu l'idée en regardant ce que les clés du dictionnaire des ressources ont été et regarder cet article: How do I get the actual resource from a ComponentResourceKey?

Cette méthode permet moi de créer d'autres styles qui auront le même aspect et la même sensation que la peau du ruban sélectionné. Changer la peau va relooker les autres aspects de l'application, comme les boutons etc ...