Днес, когато използвах WPF програма, която бях написал преди под Win8, установих, че Win8 ефекти вече се поддържат (помнете, че предишната версия на .NET 4.0 не беше поддържана). Тъй като контролите на WPF са самонарисувани и не се контролират от системната тема, тоест .NET 4.5 идва с Win8 файлове със стил на тема, и е логично този стил да се използва и под Win7.
Аз сложих . Няколко тематични пътя, поддържани от Net 4.5, са извлечени по следния начин:
Win8(AeroLite): /PresentationFramework.AeroLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes/aerolite.normalcolor.xaml Win7 (Aero): /PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes/aero.normalcolor.xaml WinXP Royale: /PresentationFramework.Royale, version=4.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes/royale.normalcolor.xaml WinXP Blue (Luna): /PresentationFramework.Luna, version=4.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes/luna.normalcolor.xaml WinXP Silver (Luna): /PresentationFramework.Luna, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes/luna.metallic.xaml WinXP Luna: /PresentationFramework.Luna, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes /luna.homestead.xaml Win98(Classic): /PresentationFramework. Classic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; component/themes /classic.xaml Забележка: Взимам . Net 4.5 style file path и други. Пътят на Net версията може да е малко по-различен, но на практика излиза, когато използваш ILSpy, за да го видиш.
С тези стилови пътища можете да приложите глобалния стил при стартиране, за да рендерирате AeroLite ефекта на Win8 в Win7:
- protected override void OnStartup(StartupEventArgs e)
- {
- var uri = new Uri("/PresentationFramework.AeroLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35;component/themes/AeroLite.NormalColor.xaml", UriKind.Relative);
- App.Current.Resources.Source = uri;
- base.OnStartup(e);
- }
Копирай код
|