Подтвердить что ты не робот

Тема Windows 7 для WPF?

Есть ли способ сделать приложение 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 - проблема решена!

Чтобы получить тему Aero для работы с элементами управления 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" ...>
4b9b3361

Ответ 1

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

  • Добавить PresentationFramework.Aero в список ссылок на приложения как требуется
  • Отредактируйте свой App.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"/>

Ответ 2

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

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

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