当 Button 或 ContentControl 等内容控件更改其内容时,我试图触发动画。我最初的想法是这样做:
<ContentControl x:Name="ContentElement">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<ContentPresenter x:Name="Content">
<ContentPresenter.Triggers>
<EventTrigger RoutedEvent="WHATGOESHERE">
<BeginStoryboard Storyboard="{StaticResource MyAnimation}" Storyboard.TargetName="Content"/>
</EventTrigger>
</ContentPresenter.Triggers>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContentControl.Style>
<Button Content="Hello"/>
</ContentControl>
但我不知道当 ContentPresenter 更改/更新时会触发哪个事件。有任何想法吗?
最佳答案
不幸的是,ContentChanged 没有 CLR 事件(更不用说 EventTriggers 所需的 RoutedEvent)。但是,鉴于您正在处理自定义控件,您可以覆盖 Content 属性的元数据并在控件中提供您自己的回调。
这可能与您正在寻找的内容有关 here
显然,他创建了一个 CLR 事件来向外部传播内容更改;你也可以只使用 RoutedEvent 来做同样的事情。
关于 OverrideMetadata here 的附加阅读
关于c# - 当 ContentControl.Content 改变时开始动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10831965/