2010-05-20 12 views
0

J'ai actuellement deux boutons qui disent gauche et droite, et je veux qu'ils déplacent un objet carré respectivement à gauche et à droite. Ce qu'il fait actuellement quand j'appuie sur la gauche déplace le carré vers la gauche, et si j'appuie à nouveau sur la gauche, il se réinitialise du centre et va vers la gauche. Je le veux pour que lorsque j'appuie sur la gauche, d'où il est actuellement pour aller à gauche et à droite.Comment puis-je déplacer un objet à gauche et à droite avec silverlight?

Je sais que le principe est quelque chose comme obtenir la position actuelle des objets et ajouter les coordonnées de toile respectivement, mais comment faire?

<UserControl x:Class="phase_2.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="400"> 
<UserControl.Resources> 
    <Storyboard x:Name="scroll_me"> 
     <DoubleAnimation x:Name="left_ani" To="0" Duration="0:0:01" Storyboard.TargetName="Rect_Animate" Storyboard.TargetProperty="(Canvas.Left)"> 
      <DoubleAnimation.EasingFunction> 
       <PowerEase EasingMode="EaseOut"></PowerEase> 
      </DoubleAnimation.EasingFunction> 
     </DoubleAnimation> 
    </Storyboard> 
    <Storyboard x:Name="scroll_me2"> 
     <DoubleAnimation x:Name="right_ani" To="200" Duration="0:0:01" Storyboard.TargetName="Rect_Animate" Storyboard.TargetProperty="(Canvas.Left)"> 
      <DoubleAnimation.EasingFunction> 
       <PowerEase EasingMode="EaseOut"></PowerEase> 
      </DoubleAnimation.EasingFunction> 
     </DoubleAnimation> 
    </Storyboard> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot" Background="White"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*"/> 
     <RowDefinition Height="35"/> 
     <RowDefinition Height="1*"/> 
    </Grid.RowDefinitions> 
    <Canvas Grid.Column="1" Grid.Row="1" x:Name="canvas1"> 
     <Rectangle x:Name="Rect_Animate" Width="35" Height="35" Fill="Red" Canvas.Left="80" /> 
    </Canvas> 
    <Button x:Name="left_btn" Width="35" Height="35" Content="L" Grid.Column="0" Grid.Row="1" Click="left_btn_Click"/> 
    <Button x:Name="right_btn" Width="35" Height="35" Content="R" Grid.Column="2" Grid.Row="1" Click="right_btn_Click"/> 
</Grid> 

+0

Pouvez-vous nous indiquer votre code? – ChrisF

Répondre

0

uniquement si votre objet est contenu dans une toile, qui en général n'est pas une grande pratique de mise en page - il n'est pas flexible.

Si vous placez des éléments dans une grille à la place, vous pouvez faire exactement ce que font les outils de conception comme Blend: ajuster la marge de tout élément que vous voulez déplacer. Vous pouvez avoir des marges négatives.

+0

Je mets la toile dans une grille, j'anime aussi les objets pour aller à gauche et à droite avec une facilité, puis-je encore utiliser les marges et les grilles et obtenir l'effet d'animation? – Craig