EventTrigger для TextBlock, который устанавливает границу - не удается разрешить все ссылки на свойства - PullRequest
4 голосов
/ 10 августа 2011

У меня есть пользовательский элемент управления в WPF, в котором я определяю большой шаблон ItemsControl. Там у меня есть Сетка, и в одном столбце этой сетки я получил TextBlock, а в другом столбце у меня есть Граница.

Я хочу выделить Границу, когда мышь входит в TextBlock.

Я пробовал несколько сценариев: сначала EventTrigger в стиле TextBlock, но я узнал, что вы не можете этого сделать, затем EventTrigger в разделе Triggers TextBlock, и теперь я просто помещаю его в DataTemplate.Triggers моего ItemsControl, но я продолжаю получать ошибка:

"Cannot resolve all property references in the property path 'Border.BorderBrush.Color'. Verify that applicable objects support the properties."  

Вот код, который вызывает проблемы:

<DataTemplate.Triggers>
    <EventTrigger SourceName="mytxtblock" RoutedEvent="TextBlock.MouseEnter">
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Storyboard.TargetName="myborder"
                                                Storyboard.TargetProperty="Border.BorderBrush.Color"
                                                Duration="0:0:1"                                                                        
                                                To="White" />
                    <ThicknessAnimation Storyboard.TargetProperty="Border.BorderThickness"
                                                    Duration="0:0:1"
                                                    From="0"
                                                    To="1" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger.Actions>
    </EventTrigger>
</DataTemplate.Triggers>

Мне кажется, я что-то упускаю из-за того, как я ссылаюсь на свойство Color моей Границы, какая-то идея?

Спасибо!

РЕДАКТИРОВАТЬ : Я понял, что объявление SolidColorBrush в Resources и последующее использование этого значения позволяет мне избавиться от

Storyboard.TargetProperty="Border.BorderBrush.Color", который меняется на Storyboard.TargetProperty="Border.BorderBrush",

но теперь компилятор сообщает мне, что объявленный мной цвет (я пробовал зеленый и прозрачный) не является допустимым значением для "To" ...

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Попробуйте

<ColorAnimation
    Storyboard.TargetName="myborder"
    Storyboard.TargetProperty="BorderBrush.(SolidColorBrush.Color)"
    Duration="0:0:1"
    To="White" />

, но вы должны объявить BorderBrush

BorderBrush="whatever"

или

<Border.BorderBrush>
    <SolidColorBrush Color="whatever" />
</Border.BorderBrush>

и в вашем "myborder".

0 голосов
/ 10 августа 2011

На вашем ColorAnimation есть два свойства:

Storyboard.TargetName="myborder"
Storyboard.TargetProperty="Border.BorderBrush.Color"

Это означает, что myborder имеет свойство с именем Border. Я думаю, что это приводит к вашей ошибке.

...