Позбавляємося від StandardStyles.xaml в Windows 8.1

Якщо ви коли-небудь створювали Windows 8 додаток використовуючи XAML, то ви, швидше за все, могли бачити доданий у ваш додаток файл з назвою StandardStyles.xaml в папці Common. Так як я бачив багато розроблених додатків, то мені доводилося спостерігати, що люди досить часто відносять цей файл до системних компонентів і абсолютно не змінюють його. Іноді це добре, але частіше це погано. Серед додатків, які мені траплялися було безліч таких, які зовсім не використовують стилі з цього словника ресурсів, але й не роблять нічого, щоб обрізати файл або видалити його зовсім, так як він не потрібен.
Цей файл був доданий в шаблони проектів Windows 8 Visual Studio для того, щоб допомогти стилізувати деякі області шаблону. У пошуках підвищення продуктивності Windows 8.1 ми відзначили, що розробники не видаляють цей файл або використовувані стилі з цього файлу. Ми також помітили, що є деякі плюси від включення цього файлу під фреймворк, так як деякі стилі/шаблони відкладеного завантаження ми реалізували в самій Windows 8.1. З цієї причини майже для всіх додатків, які ми спостерігали на практиці, стилі, наявні в Windows 8/VS2012 StandardStyles.xaml файлі, можуть бути видалені з програми і замінені на стилі містяться в XAML фреймворку.

Текстові стилі

Більша частина функцій файлу була у наданні деяких текстових стилів, які зіставляли таблицю типографських шрифтів для мови дизайну Windows. Близько 100 рядків текстових стилів зараз можуть бути перенесені на нові надані фреймворком стилі. Далі йде зіставлення того, що ви повинні замінити в своєму додатку Windows 8.1:
StandardStyles.xaml (VS 2012) імена надані Windows 8.1 XAML
BasicTextStyle BaseTextBlockStyle
BaselineTextStyle недоступний (суміщений з BaseTextBlockStyle)
HeaderTextStyle HeaderTextBlockStyle
SubheaderTextStyle SubheaderTextBlockStyle
TitleTextStyle TitleTextBlockStyle
SubtitleTextStyle SubtitleTextBlockStyle
BodyTextStyle BodyTextBlockStyle
CaptionTextStyle CaptionTextBlockStyle
BaseRichTextStyle BaseRichTextBlockStyle
BaselineRichTextStyle недоступний (суміщений з BaseRichTextBlockStyle)
BodyRichTextStyle BodyRichTextBlockStyle
ItemRichTextStyle недоступний (був таким же як і BodyRichTextBlockStyle)
Заміна досить проста, оскільки в місцях, де ви використовували {StaticResource SomeTextStyle} ви повинні використовувати {StaticResource FrameworkProvidedStyle} (зрозуміло, вказавши коректно відповідне ім'я). Як і в інших випадках при здійсненні змін, протестуйте ваш додаток, щоб переконається в тому, що ваш UI точно відповідає вашим очікуванням. Якщо вам необхідно продовжити зміна стилю, то ви можете використовувати ці стилі для того, щоб створити ваш BasedOn власний.

Стилі кнопок

Іншою складовою був набір стилів кнопок на зразок кнопки «назад», кнопок текстблока і найбільш використовуваних стилів AppBarButton. Стиль TextButtonStyle зараз є TextBlockButtonStyle і служить як стилізована кнопка для таких областей, як доступні для кліків секції заголовків GridView і т. п.
Було також кілька стилів для кнопки «назад». Після введення в Windows 8.1 AppBarButton ми можемо запропонувати кращий/особливий шаблон стилю, наданий відразу з вірними символами для стрілок. Замість того, щоб використовувати BackButtonStyle/SnappedBackButtonStyle з StandardStyles.xaml ви повинні використовувати NavigationBackButtonNormalStyle і NavigationBackButtonSmallStyle. Стиль Normal — це основний стиль, який ви повинні використовувати на сторінках і він дорівнює стандартній кнопці 41x41 px. Стиль Small це стиль кнопки 30x30 px, який ви можете використовувати для стану narrow (раніше званого snapped) або в інших випадках.
Мабуть, одними з найбільш використовуваних об'єктів були стилі AppBarButton. Приблизно близько 1100 рядків стилю для набору стилів різних символів кнопок аппбара. Зараз ми надаємо вам типові кнопки, які оптимізовані для UI і на даний момент мають 190 різних типів іконок. В якості прикладу, ось що у вас могло бути програми для Windows 8:
<Button Style="{StaticResource PlayAppBarButtonStyle}" />

А зараз це може бути замінено на:
<AppBarButton Icon="Play" Label="Play" />

Це скорочує необхідність присутності базового стилю AppBarButtonStyle а також і інших иконочных стилів. Якщо вам необхідна можливість написання тексту RTL, то ви можете додати властивість FlowDirection. Властивість Label безпосередньо зіставлено за замовчуванням значення AutomationProperties.Name в тому числі і для потреб прямого доступу.

Шаблони/стилі елементів List/Grid

У шаблонах Grid/Split раніше також перебували стилі шаблону елемента для використання на сторінках з цими шаблонами. У пошуку місця де вони реально використовуються, вони були перенесені тільки на сторінки яким вони потрібні. Багато людей думають, що їх стилі/шаблони повинні бути в App.xaml, але це не так, і, як правило, це не особливо хороше рішення в плані швидкодії. Якщо ваш стиль використовується тільки на одній сторінці, то додайте його в ресурсах цієї сторінки! Це те що було зроблено в специфічних стилях для шаблонів проектів VS 2013. Деякі були видалені у відповідності з керівництвом про розміри додатків.

Використання Visual Studio 2013 для редагування стилів

Ви можете запитати себе як же це можна використовувати все це, знати все це або навіть як можна вивчити все це на пам'ять! На щастя, в Visual Studio 2013 додано кілька чудових функцій в інструменти, для того, щоб додати цим новим стилям більше видимості. Панель ресурсів залишилася на своєму місці і показує стилі надаються фреймворком так як, наприклад, на наступному скріншоті в Blend:

Навіть якщо ви віддаєте перевагу редактор, то для вас є хороші новини, так як в VS був доданий IntelliSense для стилів!!! Якщо ви використовуєте StaticResource ви отримаєте автозаповнення стилів, які застосовуються до стилю елемента на якому ви зараз. Нопример, на TextBlock-і ви побачите тільки стилі, які застосовні до TargetType=TextBlock, як показано на наступному скріншоті:

Цей IntelliSence буде точно так само добре працювати і з вашими особистими кастомних стилями і це відмінне поліпшення продуктивності інструментарію. Це одне з моїх найулюбленіших нововведень в VS!
Якщо ви хочете побачити всі деталі цих стилів, то ви можете використати чудову можливість редагування шаблонів, яка є в Visual Studio/Blend для того, щоб проінспектувати їх усіх. Якщо у вас є стиль, то достатньо натиснути F12 (Перейти до визначення/Go To Definition), перебуваючи курсором на найменуванні стилю. Це перенесе вас до визначення стилю у generic.xaml фреймворку:

Ця чудова, підвищує продуктивність, функція доступна для всіх стилів в XAML, знову ж включаючи ваші власні. Ці стилі можуть бути проінспектовані і вручну через перегляд файлу generic.xaml який нам надає Windows SDK (розташований він у %programfiles%\Windows Kits\8.1\Include\WinRT\XAML\Design).

Резюме
Однією з основних цілей було поліпшення загальної продуктивності Windows 8.1 для всіх користувачів. Оптимізація переміщення всіх найбільш використовуваних стилів всередину фреймворку дала розробникам нові переваги для систематичності і продуктивності як для спільноти користувачів, що використовують загальні шаблони, а також скоротило час закрузки/парсинга для кожного додатка окремо необхідне для надання цих стилів.

Сподіваюся, це вам допоможе!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.