水平移动控件

时间:2012-06-25 10:02:46

标签: c# wpf animation controls storyboard

我有一个包含在堆叠面板内的按钮列表,它们将它们水平堆叠。我想知道C#背后的代码应用动画,如果我的鼠标靠近MainWindow的左端,按钮会慢慢向右移动。然而,如果我的鼠标靠近MainWindow的右侧,则按钮会慢慢向左移动。

在运行时添加和设置按钮。

1 个答案:

答案 0 :(得分:0)

如果您可以使用canvas代替stackpanel,则可以使用此代码来实现我立即为您写的动画:

在您的类中声明一个字段,如下所示:private bool _running = true;

在此之后,您可以使用它来设置按钮的动画。

new Thread(() =>
            {
                while (_running)
                {
                    Thread.Sleep(20);

                    canvas.Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
                    {
                        var position = Mouse.GetPosition(canvas).X;
                        var canvasWidth = canvas.ActualWidth;

                        if (position >=0 && position < 10.0d)
                            btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) + 1);

                        if (position <= canvasWidth && position > canvasWidth - 10.0d)
                            btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) - 1);
                    }));
                }
            }).Start();

别忘了在课堂上添加以下用法:

using System.Threading;
using System.Windows.Threading;

如果您希望代码不仅仅使用一个按钮,那么只需使用列表作为示例并稍微重写代码。同时根据您的需要调整Thread.Sleep(20)

祝你好运。