Wpf 在鼠标单击时设置x和y

Wpf 在鼠标单击时设置x和y,wpf,Wpf,我有一个矩形,我想设置位置(x,y),当用户按下鼠标按钮向左1像素,向下1像素时,我得到一个简单的反馈 <Canvas x:Name="canvas"> <Canvas.Resources> <Style x:Key="myStyle" TargetType="Rectangle"> <Setter Property="Fill" Value="AliceBlue" />

我有一个矩形,我想设置位置(x,y),当用户按下鼠标按钮向左1像素,向下1像素时,我得到一个简单的反馈

    <Canvas x:Name="canvas">
        <Canvas.Resources>
            <Style x:Key="myStyle" TargetType="Rectangle">
                <Setter Property="Fill" Value="AliceBlue" />
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Fill" Value="Green"  />
                    </Trigger>
                    <EventTrigger RoutedEvent="Button.Click" >
                        <BeginStoryboard>
                            <Storyboard TargetProperty="Canvas.Left">
                                <Int16Animation From="10" To="100" Duration="0:0:0:1" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </Canvas.Resources>

        <Rectangle x:Name="rect" Width="120" Height="120" Canvas.Left="10" Canvas.Top="10" Style="{StaticResource myStyle}" />
    </Canvas>

在我当前的解决方案中,鼠标悬停在触发器上是有效的。但对我来说什么都没发生

有没有办法做到这一点


谢谢

这里有一些地方不对劲

  • 没有
    按钮。单击矩形上的
    事件。例如使用
    MouseLeftButtonUp
  • Canvas.Left
    是一个附加属性。您必须将属性名称写在括号中
  • 它的类型为
    double
    ,因此应通过
    DoubleAnimation
    设置动画
按如下方式编写EventTrigger:

<EventTrigger RoutedEvent="MouseLeftButtonUp" >
     <BeginStoryboard>
         <Storyboard TargetProperty="(Canvas.Left)">
             <DoubleAnimation From="10" To="100" Duration="0:0:0.1" />
         </Storyboard>
    </BeginStoryboard>
</EventTrigger>