C# xaml中的动画不';不起作用,但在代码中起作用
在简单的WPF应用程序中,我的C# xaml中的动画不';不起作用,但在代码中起作用,c#,wpf,xaml,animation,eventtrigger,C#,Wpf,Xaml,Animation,Eventtrigger,在简单的WPF应用程序中,我的动画有一个相当棘手的问题。 我有一个定制的面板,附带了X和Y属性dependencProperty,它提供了如何安排布局的信息。我有一个名为MovableGameCharacter的CustomControl,我想在面板上设置移动动画。 下面是代码: 在xaml中: <Style TargetType="{x:Type local:MovableGameCharacter}" BasedOn="{StaticResource gamecharacter}" x
动画
有一个相当棘手的问题。
我有一个定制的面板
,附带了X和Y属性dependencProperty
,它提供了如何安排布局的信息。我有一个名为MovableGameCharacter
的CustomControl
,我想在面板上设置移动动画。
下面是代码:
在xaml中:
<Style TargetType="{x:Type local:MovableGameCharacter}" BasedOn="{StaticResource gamecharacter}" x:Key="movablegamecharacter">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MovableGameCharacter}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="MoveRight">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(local:GameBoardPanel.X)" To="100" From="10"
Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
事件定义如下(例如MoveRightEvent):
然而,我很惊讶这是有效的(在构造函数中添加):
所以我可能在xaml中出错了,但我不知道我做错了什么。我已经读到我必须写作
Storyboard.TargetProperty="(local:GameBoardPanel.X)"
对于附加属性,但是它仍然不起作用。当您针对的是
TranslateTransform
的一组属性时,您的TargetProperty将只是X
,您还需要在该面板上将其声明为RenderTransform
,然后TranslateTransform
将需要一个X:Name
作为TargetName
。分享你的面板xaml我们会让你分类的。不应该安装“(local:GameBoardPanel.X)”“{local:GameBoardPanel.X}”?@Gusman不应该,因为它不是标记扩展名
。好的,谢谢你提供的信息,我习惯于只在Xamarin上使用xaml,一切都与brakets配套,然后我假设这是因为您将所有实现为扩展。您的TargetProperty将只是X
,因为您的目标是TranslateTransform
的一组属性,您还需要在该面板上声明为RenderTransform
,然后TranslateTransform
将需要一个X:Name
将动画设置为TargetName
。分享你的面板xaml我们会让你分类的。不应该安装“(local:GameBoardPanel.X)”“{local:GameBoardPanel.X}”?@Gusman不应该,因为它不是标记扩展名
。好的,谢谢你提供的信息,我习惯于只在Xamarin上使用xaml,一切都与brakets配套,然后我假设这是因为您的所有实现都是扩展。
public static readonly RoutedEvent MoveRightEvent =
EventManager.RegisterRoutedEvent("MoveRight", RoutingStrategy.Bubble, typeof(MovementEventHandler), typeof(MovableGameCharacter));
MoveRight += (x, e) => { BeginAnimation(GameBoardPanel.XProperty, new DoubleAnimation(100, new Duration(new TimeSpan(0, 0, 1)))); };
Storyboard.TargetProperty="(local:GameBoardPanel.X)"