我正在尝试构建一个行为类似于文本块的用户控件,但在更改其文本时执行动画。我已经成功地创建了这样一个文本块,但我无法将此功能嵌入到它自己的控件中。这是我目前的尝试:
<ItemsControl Name="_itemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ., NotifyOnTargetUpdated=True}">
<TextBlock.Background>
<SolidColorBrush x:Name="bgBrush"></SolidColorBrush>
</TextBlock.Background>
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="bgBrush"
Storyboard.TargetProperty="Color" To="Red" Duration="0:0:.5"
AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
后面的代码只是声明了 Text 依赖属性,并在发送 OnPropertyChanged 事件时将控件的 ItemsSource 属性设置为此属性,根据这个 answer。
当我将此控件的 Text 属性绑定到我自己的应用程序中的属性时,它会适当地注册内容更改,但不会显示动画。但是,如果我将上面片段中的 Textblock 粘贴到我的应用程序中(当然要修复绑定),则会显示动画。我在这里想念什么?