Привязка шаблона с вложенными свойствами

У меня есть стандартный стиль для кнопок, но я хочу, чтобы некоторые части стиля можно было настраивать. Например, у меня есть граница, появляющаяся при срабатывании 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 границы.

22
задан Thomas Levesque 9 December 2014 в 12:48
поделиться