У меня есть стандартный стиль для кнопок, но я хочу, чтобы некоторые части стиля можно было настраивать. Например, у меня есть граница, появляющаяся при срабатывании MouseOver для кнопки, и я хочу, чтобы цвет границы можно было настраивать.
Следуя этой статье: http://www.thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/ я подумал, что для этого можно использовать вложенные свойства и TemplateBinding.
Я создал следующее вложенное свойство:
public static class ThemeProperties
{
public static Brush GetButtonBorderColour(DependencyObject obj)
{
return (Brush)obj.GetValue(ButtonBorderColourProperty);
}
public static void SetButtonBorderColour(DependencyObject obj, Brush value)
{
obj.SetValue(ButtonBorderColourProperty, value);
}
public static readonly DependencyProperty ButtonBorderColourProperty =
DependencyProperty.RegisterAttached(
"ButtonBorderColour",
typeof(Brush),
typeof(ThemeProperties),
new FrameworkPropertyMetadata(Brushes.Black, FrameworkPropertyMetadataOptions.Inherits));
}
Я установил свойство так:
И мой стиль выглядит так:
Где ключевой строкой является
Насколько я могу судить, это должно работать, но я получаю следующую ошибку во время выполнения на вышеуказанной строке:
Cannot convert the value in attribute 'Value' to object of type ''. Ошибка на объекте 'System.Windows.Setter' в файле разметки
Я сделал что-то неправильно? Я совсем новичок в WPF и не могу понять, что происходит не так, поскольку тип вложенного свойства - Brush, что является тем, что я ожидал бы от свойства BorderBrush границы.