Как работает DragMove?(Какие свойства это меняет?) - PullRequest
0 голосов
/ 21 июля 2011

Я делаю простое окно в WPF (например, Overwolf), в Overwolf в левом верхнем углу экрана есть круг, и когда вы его перетаскиваете, он перемещается обратно в угол с помощью простой анимации. Поэтому я попытался создать тот же эффект, используя DoubleAnimation для LeftProperty, но он работает только один раз ( При первом перетаскивании его работает , , второй - просто оставаться там, где вы его перетаскивали ).

Мой XAML:

<Window x:Class="Overwoof.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Name="Main"
    Width="200" 
    Height="200" 
    AllowsTransparency="True" 
    WindowStyle='None' 
    IsHitTestVisible="True"
    Topmost="True"
    Background="Transparent"
    MouseLeftButtonUp="onDragLeave"
    WindowStartupLocation="Manual">
<Grid IsHitTestVisible="True" Name="mainGrid" MinHeight="200" MinWidth="200">
    <Ellipse MouseLeftButtonDown="DragStart" Name="logo" Width="100" Height="100" Fill="Red" Opacity="0.5" Margin="12,24,66,37" IsManipulationEnabled="True" />
</Grid>

Мой код C #:

private void DragStart(object sender, MouseEventArgs e)
    {
        Main.DragMove();
    }

    private void onDragLeave(object sender, MouseEventArgs e)
    {
        DoubleAnimation da = new DoubleAnimation();
        da.From = Main.Left;
        da.To = -20;
        da.Duration = new Duration(TimeSpan.FromSeconds(0.2));
        da.Completed += new EventHandler(AnimationCompleted);
        Main.BeginAnimation(Window.LeftProperty, da);
    }

Thx, BBLN.

1 Ответ

1 голос
/ 21 июля 2011

изменить da.To = -20; на da.To -= 20;

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