当 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/

10-12 02:57