WPF用户控制动画不工作

本文关键字:工作 动画 控制 用户 WPF | 更新日期: 2023-09-27 18:03:10

我对WPF真的很陌生,所以如果你能给我一个教程,我将非常高兴:)

这是我的货币代码:

<Grid Name="Grid">
    <local:Card Loaded="Card_Loaded"
                x:Name="MyCard">
        <local:Card.Triggers>
            <EventTrigger RoutedEvent="local:Card.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="MyCard"
                                         Storyboard.TargetProperty="Opacity"
                                         From="1.0"
                                         To="0.0"
                                         Duration="0:0:5"
                                         AutoReverse="True"
                                         RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </local:Card.Triggers>
    </local:Card>
</Grid>

local:Card is a UserControl

这是为什么我使用 x: Name = " " Name = " " :

Because 'MS.Internal.Design.Metadata.ReflectionTypeNode' is implemented in the same assembly, you must set the x:Name attribute rather than the MS.Internal.Design.Metadata.ReflectionPropertyNode attribute.

我可以看到卡片和所有东西,但是动画不起作用='

这里是卡片XAML:

<UserControl.Resources>
    <x:Array Type="{x:Type s:String}"
             x:Key="src">
        <s:String>Foo</s:String>
    </x:Array>
    <DataTemplate x:Key="frontTemplate">
        <Grid Background="Transparent">
            <Image Source="Images'Card.jpg" />
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="backTemplate">
        <GroupBox Header="Back"
                  Background="White">
            <StackPanel>
                <RadioButton Content="This"
                             IsChecked="True" />
                <RadioButton Content="Is" />
                <RadioButton Content="The" />
                <RadioButton Content="Back" />
            </StackPanel>
        </GroupBox>
    </DataTemplate>
</UserControl.Resources>
<ScrollViewer>
    <ItemsControl Width="180"
                  Height="250"
                  ItemsSource="{StaticResource src}"
                  ItemTemplate="{StaticResource flipItemTemplate}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</ScrollViewer>

WPF用户控制动画不工作

我完全复制了您的XAML并在窗口中运行它。我所做的唯一更改是将本地:Card对象替换为TextBlock(因为我没有Card用户控件)。动画运行得很好。

所以要么是你的local:Card对象有一些奇怪的东西不允许动画工作要么是这一行的Loaded="Card_Loaded"方法

<local:Card Loaded="Card_Loaded" x:Name="MyCard">

正在干扰事件触发器:

<EventTrigger RoutedEvent="local:Card.Loaded">

将故事板放到EventTrigger中。EnterActions或EventTrigger。操作标记。

我最近潜入了一些WPF动画....这是让我开始的链接:http://www.galasoft.ch/mydotnet/articles/article - 2006102701. - aspx

解决方案:

<Grid Name="Grid">
    <local:Card x:Name="MyCard" MouseEnter="MyCard_MouseEnter" />
</Grid>
<Window.Resources>
    <Storyboard x:Key="sbdCardAnim">
        <DoubleAnimation
            Storyboard.TargetName="MyCard" 
            Storyboard.TargetProperty="Opacity"
            From="1" To="0" Duration="0:0:5"
            AutoReverse="True" RepeatBehavior="Forever" />
    </Storyboard>
</Window.Resources>
c#:

    private void MyCard_MouseEnter(object sender, MouseEventArgs e)
    {
        Storyboard sbdCardAnim = (Storyboard)FindResource("sbdCardAnim");
        sbdCardAnim.Begin(this);
    }