wpf其实支持拖拽是很简单的。使用drag事件或者自定义鼠标事件都是可以实现的。
今天分享一个用鼠标的点击和up事件实现的拖拽滑动效果。
首先在xaml中定义一个ScrollViewer。
代码如下 | 复制代码 |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="400" Width="680"> |
后台模拟一下按钮数据:
代码如下 | 复制代码 |
/// /// 创建按钮集合 /// /// public void CreateNgEtry(ref Grid grid) { grid.Children.Clear(); grid.RowDefinitions.Clear(); grid.ColumnDefinitions.Clear(); for (int i = 0; i < 6; i++) { } for (int i = 0; i < 18 + 1; i++) { grid.RowDefinitions.Add(new RowDefinition()); } for (int i = 0; i < 18; i++) { grid.ColumnDefinitions.Add(new ColumnDefinition()); for (int j = 0; j < 6; j++) { Button but = new Button(); but.Height = 80; but.Width = 110; but.FontSize = 16; grid.Children.Add(but); System.Windows.Controls.Grid.SetColumn(but, j); System.Windows.Controls.Grid.SetRow(but, i); but.Content = "Test" + i.ToString(); } } } |
鼠标按下时的事件处理,记住当前的位置:
代码如下 | 复制代码 |
private void canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e) { targetElement = Mouse.DirectlyOver as UIElement; if (targetElement != null) { targetPoint = e.GetPosition(NGEntry); } } |
当鼠标拖动时:
代码如下 | 复制代码 |
private void canvas_PreviewMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed && targetElement != null) { var pCanvas = e.GetPosition(canvas); double gridtop = Convert.ToDouble(NGEntry.GetValue(Canvas.TopProperty)); NGEntry.SetValue(Canvas.TopProperty, pCanvas.Y - targetPoint.Y); } } |
当鼠标放下事件:
代码如下 | 复制代码 |
private void canvas_PreviewMouseUp(object sender, MouseButtonEventArgs e) |
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级