Code Behind для стиля в WPF
Часто возникает ситуация, когда нужно добавить обработчик через стиль или шаблон. Для этого нужно объявить partial класс для словаря ресурсов, в котором находится стиль. В этом классе и будут обработчики. Сделать это очень просто. Сначала создадим словарь ресурсов, в котором укажем класс с помощью атрибута «x:Class»:
<ResourceDictionary x:Class="TestApplication.MyDictionary" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Style TargetType="{x:Type Button}" x:Key="ButtonStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border BorderThickness="1" BorderBrush="Black"> <Label Content="{TemplateBinding Content}" Margin="10" MouseEnter="MouseEnterHandler" MouseLeave="MouseLeaveHandler" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </ResourceDictionary>
Здесь переопределен шаблон для кнопки. Интересны нам сейчас обработчики MouseEnterHandler и MouseLeaveHandler. Сейчас при компиляции будет ошибка. Добавляем класс с обработчиками:
namespace TestApplication { public partial class MyDictionary { private void MouseEnterHandler(object sender, MouseEventArgs e) { ((Label)sender).Foreground = Brushes.Red; } private void MouseLeaveHandler(object sender, MouseEventArgs e) { ((Label)sender).Foreground = Brushes.Black; } } }
Здесь важно, чтобы полное имя класса совпадало с тем, что мы указали в «x:Class».
Все, можно подключать словарь и пользоваться стилем.