0

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

    <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>

使用我当前的解决方案,鼠标悬停在触发器上。但是对于我的 EventTriggers 没有任何反应?

任何想法如何做到这一点?

谢谢

4

1 回答 1

1

这里有一些问题。

  • 矩形上没有Button.Click事件。改为使用例如MouseLeftButtonUp
  • Canvas.Left是附属物。您必须在括号中写入属性名称。
  • 它是 type double,因此应该由 a 设置动画DoubleAnimation

像这样编写 EventTrigger:

<EventTrigger RoutedEvent="MouseLeftButtonUp" >
     <BeginStoryboard>
         <Storyboard TargetProperty="(Canvas.Left)">
             <DoubleAnimation From="10" To="100" Duration="0:0:0.1" />
         </Storyboard>
    </BeginStoryboard>
</EventTrigger>
于 2013-04-09T19:20:29.550 回答