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