Есть ли способ автоматически применить тему / шаблон / стиль ко всем элементам управления targettype, чтобы мне не нужно было указывать Template = ..., Style = ... для всех элементов управления?
Автоматическое применение шаблона (темы) в Silverlight 2 (RC0)
Ответы (3)
Я думал, что есть способ сделать это, просто опуская атрибут x: Key, но, похоже, это больше не работает. Основываясь на некоторых поисковых запросах, мне кажется, что вам лучше всего создать собственную библиотеку настраиваемых элементов управления, в которой есть файл themes / generic.xaml, который определяет ваши настраиваемые стили. Затем вы можете использовать свои собственные элементы с правильным стилем (MyButton вместо Button). Либо это, либо придерживайтесь свойства Style.
Пример этого здесь и альтернативного подхода с использованием тем здесь.
Обновление: только что нашел действительно хороший пример этого здесь (я думаю, вы уже это видели :).
Чтобы настроить тему для всех элементов управления, создайте событие запуска и установите тему в обработчике событий запуска. Эта тема будет применяться ко всем пользовательским элементам управления в этом решении.
//App.xaml
<Application x:Uid="Application_1" x:Class="SampleApp.Home.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
Startup="Application_Startup">
//App.xaml.cs
private void Application_Startup(object sender, StartupEventArgs e)
{
StyleManager.ApplicationTheme = new MetroTheme(); //Set your theme here
}
Эйнарл: Сейчас нет возможности «каскадировать» шаблоны / стили элементов управления в ядре Silverlight 2. То есть вы не можете установить шаблон стиля / элемента управления для TextBox и ожидать, что все TextBox его подберут. Это определенно то, что команда рассматривает в будущих версиях.