winforms – 在Windows Phone中实现拖动和交换项目
发布时间:2020-12-14 05:27:22 所属栏目:Windows 来源:网络整理
导读:我是 Windows手机的新手.我的问题如下: 我有一个按钮的项目网格.我想为按钮实现拖动和交换功能.如何在WP7平台上执行此操作. 解决方法 这是解决方案! xaml看起来像这样 Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,12,0" toolkit:WrapPanel Height
我是
Windows手机的新手.我的问题如下:
我有一个按钮的项目网格.我想为按钮实现拖动和交换功能.如何在WP7平台上执行此操作. 解决方法
这是解决方案! xaml看起来像这样
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,12,0"> <toolkit:WrapPanel Height="510" HorizontalAlignment="Left" Margin="18,56,0" Name="wrapPanel1" VerticalAlignment="Top" Width="411"> <Button Content="1" Height="124" Name="button2" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="2" Height="124" Name="button3" Width="134" > <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="3" Height="124" Name="button4" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="4" Height="124" Name="button5" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="5" Height="124" Name="button6" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="6" Height="124" Name="button7" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="7" Height="124" Name="button8" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="8" Height="124" Name="button9" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="9" Height="124" Name="button10" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="10" Height="124" Name="button11" MouseLeftButtonDown="mouseDown" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="11" Height="124" Name="button12" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> <Button Content="12" Height="124" Name="button13" Width="134"> <toolkit:GestureService.GestureListener> <toolkit:GestureListener DragDelta="GestureListener_DragDelta" DragStarted="GestureListener_DragStarted" DragCompleted="GestureListener_DragCompleted" /> </toolkit:GestureService.GestureListener> </Button> </toolkit:WrapPanel> </Grid> 现在C#背后的代码 TranslateTransform translateTransform; PointCollection points = new System.Windows.Media.PointCollection(); Button firstObject; private void GestureListener_DragStarted(object sender,DragStartedGestureEventArgs e) { translateTransform = new TranslateTransform(); firstObject = sender as Button; var transform1 = firstObject.TransformToVisual(wrapPanel1); Point absolutePosition1 = transform1.Transform(new Point(0,0)); } private void GestureListener_DragDelta(object sender,DragDeltaGestureEventArgs e) { var moveablebutton = sender as Button; moveablebutton.RenderTransform = translateTransform; translateTransform.X += e.HorizontalChange; translateTransform.Y += e.VerticalChange; } private void GestureListener_DragCompleted(object sender,DragCompletedGestureEventArgs e) { var lastObject = sender as Button; Button b=new Button(); int count = wrapPanel1.Children.Count; int index = wrapPanel1.Children.IndexOf(lastObject); var transform2 = lastObject.TransformToVisual(wrapPanel1); Point absolutePositon2 = transform2.Transform(new Point(0,0)); Point P1; Point P2 ; Point P3 ; Point P4 ; P1 = e.GetPosition(wrapPanel1); P2 = new Point(P1.X+134,P1.Y+124); Button swapitem=null; foreach (UIElement ctrl in wrapPanel1.Children) { int index2; var transform3 = ctrl.TransformToVisual(wrapPanel1); Point comparePos = transform3.Transform(new Point(0,0)); swapitem = ctrl as Button; index2 = wrapPanel1.Children.IndexOf(swapitem); if (index != index2) { P3 = new Point(comparePos.X,comparePos.Y); P4 = new Point(comparePos.X + 158,comparePos.Y+170); if (!(P2.Y < P3.Y || P1.Y > P4.Y || P2.X < P3.X || P1.X > P4.X)) { swapitem = ctrl as Button; index2 = wrapPanel1.Children.IndexOf(swapitem); b = lastObject as Button; b.RenderTransform = translateTransform; translateTransform.X -= e.HorizontalChange; translateTransform.Y -= e.VerticalChange; wrapPanel1.Children.Remove(lastObject); wrapPanel1.Children.Remove(swapitem); // wrapPanel1.Children.RemoveAt(index2); if (index < index2) { wrapPanel1.Children.Insert(index,swapitem); wrapPanel1.Children.Insert(index2,b); } else { wrapPanel1.Children.Insert(index2,b); wrapPanel1.Children.Insert(index,swapitem); } break; }} } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xna – 与Microsoft“WinForms Series 1:Graphics Device”
- windows-7 – 通过GP添加快捷方式 – 程序文件与程序文件(x
- 保护IIS服务器的15个技巧
- 在Windows Server 2008上安装IIS 7.5
- .net – 带有验证和取消按钮的消息框
- 安装 – 在Windows Server 2012上安装AppFabric 1.1给出错误
- windows – 如何阻止单个GPO的继承/应用?
- mingw – 程序入口点_gxx_personality_v0无法在动态链接库中
- 停止屏幕刷新 – INT 0x10(视频服务) – 在装配中
- 创建一个密钥表以在Windows中与kinit一起使用