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