0

我正在尝试构建一个行为类似于文本块的用户控件,但在更改其文本时执行动画。我已经成功地创建了这样一个文本块,但我无法将此功能嵌入到它自己的控件中。这是我目前的尝试:

<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 粘贴到我的应用程序中(当然要修复绑定),则会显示动画。我在这里想念什么?

4

0 回答 0