我对 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 是一个 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>
最佳答案
我完全复制了您的 XAML 并在窗口中运行它。我所做的唯一更改是用 TextBlock 替换 local:Card 对象(因为我没有 Card 用户控件)。动画完美运行。
所以要么你的 local:Card
对象有一些奇怪的东西,不允许动画工作,要么在这一行的 Loaded="Card_Loaded"
方法:
<local:Card Loaded="Card_Loaded" x:Name="MyCard">
正在干扰事件触发器:
<EventTrigger RoutedEvent="local:Card.Loaded">
关于c# - WPF UserControl 动画不起作用..?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6767164/