Тема 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" ...>
Ответы
Ответ 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...) и добавить его в список развернутых файлов.