Как я могу переместить объект влево и вправо с помощью серебряного света? - PullRequest
0 голосов
/ 20 мая 2010

В настоящее время у меня есть две кнопки, которые говорят влево и вправо, и я хочу, чтобы они двигали квадратный объект влево и вправо соответственно.

То, что он делает в данный момент, когда я нажимаю влево, перемещает квадрат влево, а если я нажимаю снова влево, он сбрасывается из центра и идет влево.

Я хочу, чтобы когда я нажимал влево, откуда бы он ни находился, он должен идти влево и вправо.

Я знаю, что принцип заключается в том, чтобы получить текущее положение объектов и добавить координаты холста соответственно, но как мне это сделать?

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

1 Ответ

0 голосов
/ 20 мая 2010

Только если ваш объект содержится в Canvas, что, как правило, не очень хорошая практика верстки - он не гибкий.

Если вместо этого вы помещаете элементы в сетку, вы можете делать именно то, что делают инструменты дизайнера, такие как Blend: настраивать поля любого элемента, который вы хотите переместить. Вы можете иметь отрицательные поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...