Невозможно изменить цвет фона с помощью триггеров в XAML - PullRequest
1 голос
/ 31 января 2010

У меня есть небольшая проблема, и я не знаю, как я могу это исправить ...

Я создал CustomControl под названием «StandardKeyView» из кнопки. Этот элемент управления имеет свойство зависимостей «DownImage», которое используется для определения фонового изображения для моего элемента управления при наведении курсора.

Вот определение свойства DownImage:

public SolidColorBrush DownImage
    {
        get { return (SolidColorBrush)GetValue( DownImageProperty ); }
        set { SetValue( DownImageProperty, value ); }
    }
    public static readonly DependencyProperty DownImageProperty = 
DependencyProperty.Register( "DownImage", typeof( SolidColorBrush ), typeof( StandardKeyView ) );

Вот определение нового StandardKeyView:

<skv:StandardKeyView Background="White" DownImage="Black"/>

Вот шаблон управления по умолчанию для StandardKeyView:

    <ControlTemplate TargetType="{x:Type skv:StandardKeyView}" x:Key="DefaultStandardKeyViewTemplate">
    <Button Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Background="{TemplateBinding Background}" x:Name="MainButton" />
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="MainButton" Property="Background" Value="{TemplateBinding Property=DownImage}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Я думаю, что это должно работать нормально, но не совсем. У меня странная ошибка: когда я пытаюсь запустить приложение, у меня возникает исключение XamlParseException, которое говорит

Невозможно преобразовать значение атрибута 'Value' как объект типа ''.

Я думаю, что тип DownImage хорош, тогда почему он не работает, когда используется в триггере?

1 Ответ

1 голос
/ 01 февраля 2010

Попробуйте использовать вместо:

Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=DownImage}"
...