C# xaml中的动画不';不起作用,但在代码中起作用

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

在简单的WPF应用程序中,我的
动画
有一个相当棘手的问题。 我有一个定制的
面板
,附带了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)"