Применение тем Office 2007 для приложения WPF
-
19-09-2019 - |
Вопрос
Я использую RibbonControl из WPF toolkit.Он выполнен в офисной синей, черной и серебристой тематике.Но тема не применяется к элементам управления в окне.Есть ли какое-нибудь решение для этого?
Я применяю тему следующим образом
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/RibbonControlsLibrary;component/Themes/Office2007Black.xaml"/>
</ResourceDictionary.MergedDictionaries>
Но элементы управления похожи на button, текстовое поле не разделено на группы.
Решение
Вам нужен отдельный словарь ресурсов, чтобы предоставлять стили WPF различным элементам управления.Я создал свой собственный, пробуя цвета в различных приложениях.На самом деле это не очень сложно сделать, и у меня на это ушло всего пару часов.
Если вы ищете быстрое и простое решение, попробуйте Темы WPF.Тема Bureau Blue очень похожа на Office 2007 blue.
Другие советы
Как вы пытаетесь применить тему?Применяете ли вы это в своем 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>
Я пытался повторно использовать ресурсы, определенные в 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?
Этот метод позволяет мне создавать другие стили, которые будут иметь тот же внешний вид, что и выбранная обложка ленты.Изменение обложки приведет к изменению других аспектов приложения, таких как кнопки и т.д...