2013-04-09 49 views
0

我有一個矩形,我想設置位置(x,y),當用戶按下鼠標左鍵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> 

使用我目前的解決方案,鼠標懸停在觸發器上。但是對於我的EventTrigger,沒有任何反應?

任何想法如何做到這一點?

謝謝

回答

1

這裏有一些錯誤。

  • 矩形上沒有Button.Click事件。改爲使用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>