Есть ли какой то способ, для того что бы приложения на WinForms или WPF начиная с XP и дальше до 10, выглядели одинаково? Есть иногда даже разница между 7 и 10 виндой.
Смотрите.
Фреймворк WPF содержит несколько тем, каждая из которых соответствует определённому стилю UI. Эти темы содержатся в общедоступных сборках, и имеют название PresentationFramework.*.dll
.
Вы должны просто подключить эти темы в ваше приложение, и они будут применены. Например, если вы хотите, чтобы всё приложение имело стиль Aero, как в Windows 7, вы должны сделать следующее: (1) подключить в References сборку PresentationFramework.Aero.dll
, и (2) подключить стили в вашем App.xaml
:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Aero.NormalColor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Аналогично, вы можете подключить сборку PresentationFramework.Classic.dll и стили
<ResourceDictionary Source="/PresentationFramework.Classic,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Classic.xaml"/>
чтобы получить визуальный стиль как в «классическом» стиле Windows XP (имитация Windows 2000).
В PresentationFramework.Luna.dll есть несколько тем:
<ResourceDictionary Source="/PresentationFramework.Luna,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Luna.NormalColor.xaml"/>
— стандартная тема Windows XP,
<ResourceDictionary Source="/PresentationFramework.Luna,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Luna.Metallic.xaml"/>
— тема XP Silver (Metallic),
<ResourceDictionary Source="/PresentationFramework.Luna,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Luna.Homestead.xaml"/>
— зелёная тема XP Homestead.
В PresentationFramework.Royale.dll
<ResourceDictionary Source="/PresentationFramework.Royale,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Royale.NormalColor.xaml"/>
— тема XP Media Center Edition и т. д.
Если вы хотите вид как в Window 8/10, вам понадобится PresentationFramework.Aero2.dll и/или PresentationFramework.AeroLite.dll. Они доступны только на старших версиях Windows, так что для использования на младших вам придётся установить флажок CopyLocal и таскать сборки в комплекте. В них идёт по одной теме:
<ResourceDictionary Source="/PresentationFramework.Aero2,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/Aero2.NormalColor.xaml"/>
и
<ResourceDictionary Source="/PresentationFramework.AeroLite,
Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35
;component/themes/AeroLite.NormalColor.xaml"/>
Вы можете, кстати, определять стили локально, тогда только этот кусок приложения будет соответствовать вашей теме. Например:
PublicKeyToken, судя по всему, всегда один и тот же.
Дополнительное чтение по теме:
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не выводит запись об изменения в реестре ( вывод в консоль ) По этой статье + примере на программе: RegistryMonitor
Перед сохранением хотел сделать подтверждение, прописал data-confirm и теперь окно вызывается 2 раза перед отправкой формы