一个设置边框的TextBlock上的EventTrigger - 无法解析所有属性引用

4
我在WPF中有一个自定义控件,在其中定义了一个大型的ItemsControl模板。在这里,我有一个网格,在该网格的一列中,我有一个TextBlock,另一列中有一个边框。
当鼠标进入TextBlock时,我想突出显示Border。
我尝试了几种方案:首先是TextBlock样式中的EventTrigger,但我了解到不能这样做;然后是TextBlock Triggers部分中的EventTrigger;现在我将其放在我的ItemsControl的DataTemplate.Triggers中,但我仍然收到错误提示:
"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>

我感觉我对于 Border 的 Color 属性的引用方式有些不懂,你有什么见解吗?

谢谢!

编辑: 我发现在 Resources 中声明一个 SolidColorBrush,然后使用该值可以让我摆脱

Storyboard.TargetProperty="Border.BorderBrush.Color" 这一段并改为 Storyboard.TargetProperty="Border.BorderBrush",

但现在编译器告诉我,我声明的颜色(我尝试了 Green 和 Transparent)不是 "To" 的有效值...

2个回答

4

尝试

<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”中也是如此。


我收到了一个异常:'BorderBrush' 属性在路径 'BorderBrush.(0)' 中没有指向 DependencyObject。 - Louis Kottmann
我可能永远都不会掌握WPF绑定路径,但是"BorderBrush.(SolidColorBrush.Color)"对于我的UserControl边框起作用了,所以谢谢! - Jon
(编辑)这是一个XAML PropertyPath,而不是我之前所说的绑定路径。发布此内容以帮助其他人寻找启示。 - Jon
在我的“BorderBrush”属性上没有声明/设置值这个小“问题”是我错过的。在WPF/XAML上已经6年了,还在学习! - Hugo

0
在你的ColorAnimation中有两个属性:
Storyboard.TargetName="myborder"
Storyboard.TargetProperty="Border.BorderBrush.Color"

这意味着myborder有一个名为Border的属性。我认为这是导致您错误的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接