我有一个包含在堆叠面板内的按钮列表,它们将它们水平堆叠。我想知道C#背后的代码应用动画,如果我的鼠标靠近MainWindow的左端,按钮会慢慢向右移动。然而,如果我的鼠标靠近MainWindow的右侧,则按钮会慢慢向左移动。
在运行时添加和设置按钮。
答案 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)
。