WPF: Создание контролов, стили которых зависят от системной темы

Автор: Topol Воскресенье, Май 6th, 2012 Нет комментариев

Рубрика: Операционные системы

Внешний вид – важная составляющая при создании интерфейса. Причем, неплохо бы внести разнообразие в него. И вот тут приходится очень кстати замеччательная возможность приложений – использование тем. Сделать свои контролы зависимыми от системной темы очень просто. Все что вам нужно, это папка themes, в которую вы будуте помещать файлы содержащие стили. Имя файла темы должно выглядеть так:

Код:
themes\<Theme Name>.<Theme Color>.xaml

Например, для стандартных тем Windows, создайте файлы:

Код:
themes\luna.normalcolor.xaml
themes\luna. homestead.xaml
themes\luna.metallic.xaml
themes\royale.normalcolor.xaml
themes\aero.normalcolor.xaml
themes\Classic.xaml

И поместите в них необходимые стили.

ВНИМАНИЕ: У контрола будет именно тот стиль, который вы опишите, а не системный.
Также необходимо добавить файл с именем generic.xaml, который будет содержать стиль, применяемый при неописаной теме (т.е. если файла с именем текущей темы Windows в папке themes нет).

Далее необходимо добавить ссылку в файл AssemblyInfo (находится в папке «Properties» – если C#, в папке «My Project» – если VB). Ссылку необходимо добавить ниже последней строки начинающейся на [assembly… или <Assembly… (зависит от языка):
Для C#:

Код:
assembly:ThemeInfo(ResourceDictionaryLocation.SourceAssembly,                     ResourceDictionaryLocation.SourceAssembly)

Для VB:

Код:
<Assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly,                     ResourceDictionaryLocation.SourceAssembly)>

Первый параметр сообщает движку, где находятся темы – в данном случае это текущая сборка. Второй параметр указывает место расположения файла generic.xaml.

А теперь, откомпилируйте и запустите ваш проект. Смените используемую Windows тему и убедитесь, что в вашем приложении тоже сменились стили!

Источник: thevista.ru

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

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты