четверг, 8 августа 2013 г.

Відмінності між StaticResource і DynamicResource в WPF.

 
Перед тим як почати розмову про відмінності між  Static Resource і  Dynamic Resource в WPF слід зазаначити, що  кожен об`єкт, який наслідується від класу FrameworkElement   має пропертю Resources ,  в якій зберігається словникова колекція ресурсів (що представляє собою екземпляр класу ResourceDictionary). Ця колекція ресурсів може зберігати об'єкт будь-якого типу з індексацією по рядку.



Отже, давайте розглянемо основні відмінності:
1.У випадку :
  • Static Resource  -  об'єкт витягується з колекції ресурсів тільки один раз. Залежно від типу об'єкта (і способу, яким він використовується), будь-які зміни, які вносяться в цей об'єкт будуть помічені відразу ж.
  • Dynamic Resource - об'єкт відшукується в колекції ресурсів при кожному виникненні в ньому необхідності. Це означає, що під тим же самим ключем може розміщуватися і зовсім новий об'єкт, і динамічний ресурс буде підхоплювати цю зміну.
2. Static resources - швидчі. Dynamic resource більше знижують перформенс, порівняно  з static resources.
Зауваження !!!  У рідкісних випадках dynamic resource також використовуються для прискорення першого завантаження вікна.
3. Ієрархія ресурсів
Існує ще одна особливість, яку слід врахувати !!!  Static resource  завжди повинен бути визначений в коді розмітки перед посиланням на нього .
Dynamic resource рекомендується використовувати лише в таких ситуаціях:
  • Ресурс має властивості, які залежать від параметрів системи (таких як поточний колір або шрифт Windows);
  • Планується замінювати об'єкти ресурсів програмним чином (skinning ).
 
Ресурси системи
Як згадувалося раніше, dynamic resources головним чином призначені для того, щоб допомогти апплікації реагувати на зміни в системних налаштуваннях. При цьому відразу виникає питання: як витягти налаштування системи і працювати з ними в коді?
Секрет криється в наборі з трьох класів SystemColors, SystemFonts і SystemParameters, які розташовані в неймспейсі System.Windows.
-  Клас SystemColors надає доступ до налаштувань кольору.
-   Клас SystemFonts забезпечує доступ до налаштувань шрифтів.
-   Клас SystemParameters охоплює величезний список налаштувань, які описують стандартний розмір різних екранних елементів, параметри клавіатури і миші, розмір екрану, а також активні графічні ефекти (на зразок  відкидання тіней і відображення вмісту вікон при перетягуванні).
Скачати приклад









Комментариев нет:

Отправить комментарий