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».
Все, можно подключать словарь и пользоваться стилем.
