Тема Windows 7 для WPF? - PullRequest
       26

Тема Windows 7 для WPF?

40 голосов
/ 16 января 2010

Есть ли способ заставить приложение WPF выглядеть так, как будто оно работает в Windows 7, даже если оно работает в XP? Я ищу какую-то тему, которую я могу просто вставить. Мне известен проект тем на Codeplex (http://www.codeplex.com/wpfthemes),, но в нем отсутствует поддержка DataGrid, что мне крайне необходимо. Я был думая, что, возможно, тема Windows 7 будет простым портом или уже существует в каком-то файле. Любая имеющаяся у вас информация (даже если это плохие новости) будет высоко оценена.


Обновление

Используя идею @Lars Truijens, я смог заставить Windows 7 искать основные элементы управления, но, к сожалению, он не работал для элемента управления WPF Toolkit DataGrid, который мне нужен.

DataGrid выглядит так с темой Aero

Windows XP-look DataGrid

DataGrid должен выглядеть так

Windows 7-look DataGrid

Итак, я все еще ищу решение этой проблемы, если у кого-то есть идеи. Может быть, кто-то создал расширение для темы Aero, которое охватывает элементы управления WPF? Опять же, любая информация, которую вы имеете, очень ценится.


Обновление 2 - DataGrid Проблема решена!

Чтобы тема Aero работала с DataGrid или любыми другими элементами управления WPF Toolkit, вам просто нужно добавить второй словарь Aero, поэтому ваш App.xaml должен выглядеть следующим образом.

<Application.Resources>
    ...
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />
            <ResourceDictionary
                Source="pack://application:,,,/WPFToolkit;component/Themes/Aero.NormalColor.xaml" />
            ...
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Кроме того, я бы рекомендовал отключить линии сетки в элементах управления DataGrid (потому что они выглядят ужасными ):

<DataGrid GridLinesVisibility="None" ...>

Ответы [ 2 ]

52 голосов
/ 16 января 2010

WPF поставляется со стандартными темами Windows во всех версиях Windows. Например, у вас может быть тема Aero (которую используют Vista и Windows 7) в Windows XP, выполнив следующие шаги:

  1. Добавьте PresentationFramework.Aero в список ссылок вашего приложения как обязательное
  2. Отредактируйте приложение. Xaml

из этого

<Application.Resources>
  <!-- Your stuff here -->
</Application.Resources>

к этому

<Application.Resources>
  <ResourceDictionary>
    <!-- Put your stuff here instead -->

    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources> 

Источник: http://mrpmorris.blogspot.com/2008/05/using-vista-aero-theme-in-xp-wpf-apps.html

Другие альтернативы ниже. Обязательно добавьте соответствующую сборку в список ссылок вашего приложения как требуется.

<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Classic;component/themes/Classic.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Luna.Homestead;component/themes/Luna.Homestead.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Luna.Metallic;component/themes/Luna.Metallic.xaml"/>
<ResourceDictionary Source="/PresentationFramework.Zune;component/themes/Zune.NormalColor.xaml"/>
4 голосов
/ 15 мая 2011

Одно дополнение к ответу Ларса и обновлению DanM:

При развертывании необходимо добавить aero Dll в установочный каталог.

Вы можете сделать это, перейдя в свойства PresentationFramework.Aero, который вы добавили к ссылкам и установив CopyLocal=True. Затем вам нужно будет перейти к любому используемому инструменту развертывания (я люблю WIX ...) и добавить его в список развернутых файлов.

...