win10 uwp 拖动控件
我们会使用控件拖动,可以让我们做出好看的动画,那么我们如何移动控件,我将会告诉大家多个方法。其中第一个是最差的,最后的才是我希望大神你去用。
Margin 移动
我们可以使用Margin移动,但这是wr说不要这样做。
We can move the control by Margin,but using this method is not recommended.
我们可以在xaml写一个Button,然后就使用左键获取鼠标,这个可以去看 win10 uwp 获取按钮鼠标左键按下
于是在Button_OnPointerMoved,我们获取移动的xy
PointerPoint point = e.GetCurrentPoint(btn);
这样point.Position.X就是移动的左边
我们可以通过x += point.Position.X - btn.ActualWidth / 2.0;
这是因为btn.ActualWidth / 2.0不用的话会是控件的左上角。
我们把它给Margin
private void Button_OnPointerMoved(object sender, PointerRoutedEventArgs e)
{
Button btn=sender as Button;
if (btn == null)
{
return;
}
e.Handled = true;
PointerPoint point = e.GetCurrentPoint(btn);
if (point.Properties.IsLeftButtonPressed)
{
double x = (double)btn.GetValue(Canvas.LeftProperty);
double y = (double)btn.GetValue(Canvas.TopProperty);
x += point.Position.X - btn.ActualWidth / 2.0;
y += point.Position.Y - btn.ActualHeight / 2.0;
btn.Margin=new Thickness(x,y,0,0);
}
}
Canvas 拖动控件
我们需要把控件放在Canvas,然后使用Margin一样的
我们需要设置附件属性,btn.SetValue(Canvas.LeftProperty, x)就是设置Canvas.Left
private void Button_OnPointerMoved(object sender, PointerRoutedEventArgs e)
{
Button btn=sender as Button;
if (btn == null)
{
return;
}
e.Handled = true;
PointerPoint point = e.GetCurrentPoint(btn);
if (point.Properties.IsLeftButtonPressed)
{
double x = (double)btn.GetValue(Canvas.LeftProperty);
double y = (double)btn.GetValue(Canvas.TopProperty);
x += point.Position.X - btn.ActualWidth / 2.0;
y += point.Position.Y - btn.ActualHeight / 2.0;
btn.SetValue(Canvas.LeftProperty, x);
btn.SetValue(Canvas.TopProperty, y);
}
}
Manipulation 拖动控件
我们可以使用手势,这个需要在控件设置ManipulationMode="All",使用ManipulationDelta
private void Button_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
Button btn = sender as Button;
if (btn == null)
{
return;
}
if (dragTranslation == null)
{
dragTranslation = new TranslateTransform();
}
btn.RenderTransform = dragTranslation;
dragTranslation.X += e.Delta.Translation.X;
dragTranslation.Y += e.Delta.Translation.Y;
}
做好之后,我们发现实在奇怪

大神,请用力划。
大神:我的控件哪去?
控件:谁叫你那么用力
Canvas:我的左边可以长度无限。
……
好在OneWindows的帮助
参见:http://www.cnblogs.com/cjw1115/p/5323339.html

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
win10 uwp 拖动控件的更多相关文章
- win10 uwp InkCanvas控件数据绑定
本文主要说如何绑定InkCanvas,让笔画变化的时候我们可以知道. 我们本来的InkCanvas没有提供笔画绑定,所以我们自己写 using Windows.UI.Input.Inking; usi ...
- wxpython 中 用鼠标拖动控件 总结
#encoding: utf-8 import wx import os import noname class Frame( noname.MyFrame1 ): def __init__(self ...
- WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
Windows Community Toolkit 再次更新到 5.0.以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了. ...
- [UWP]新控件ColorPicker
1. 前言 Fall Creators Update中提供了一个新得ColorPicker控件,解决了以前选择颜色只能用Combo Box的窘境. 2. 一个简单的例子 <ColorPicker ...
- 【Win10】SplitView控件
SplitView是Win10中的新控件. 用于呈现两部分视图. 一个视图是主要内容,另一个视图是用于导航.(也就是通常说的汉堡菜单.) 主要结构: <SplitView> <Spl ...
- UWP开发随笔——UWP新控件!AutoSuggestBox!
摘要 要开发一款优秀的application,控件肯定是必不可少的,uwp就为开发者提供了各种各样的系统控件,AutoSuggestBox就是uwp极具特色的控件之一,也是相对于之前win8.1的ua ...
- C# 在窗体上可拖动控件
最近做了一个标签打印配置功能,需要根据客户需求自定义标签格式.显示内容,这时就用到了后台生成控件,并且其控件可在窗口中进行拖动,这里仅为记录一下实现过程,方便以后使用. 结果图: 源码: using ...
- 【Win10】实现控件倒影效果
先引入个小广告: 最近买了台小米盒子折腾下,发觉 UI 还是挺漂亮的,特别是主页那个倒影效果. (图随便找的,就是上面图片底部的那个倒影效果.) 好了,广告结束,回归正题,这个倒影效果我个人觉得是挺不 ...
- android 可拖动控件 ontouchevent
首先附上文章的转载内容的链接: 学习android 可拖动事件首先需要对android的屏幕和touchevent参数建立一个详细的知识结构. 1.android坐标系统 一.首先明确一下 andro ...
随机推荐
- 结对编程1——四则运算-GUI
码市链接:https://coding.net/u/hmhhh/p/hmh-homework/git/tree/master/ 201421123003 黄建英 201421123004 黄美海 题目 ...
- ubuntu下chromium浏览器flash插件安装
ubuntu下chromium浏览器默认是不支持flash的,在新立德软件包中搜索flash得到的“Adobe Flash Player plugin installer”也没有什么卵用,因为装完以后 ...
- 控制结构(7) 程序计数器(PC)
// 上一篇:最近最少使用(LRU) // 下一篇:线性化(linearization) 程序的每一行都是一个状态,对应的行指令.同步的情况下同一个pc一直自增,异步的时候,分裂出一个新的子pc,独立 ...
- 201521123065《java程序设计》第9周学习总结
1. 本周学习总结 2. 书面作业 本次PTA作业题集异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 出现的异 ...
- PL/SQL客户端连接虚拟机(linux)下的oracle服务器配置
虚拟机上linux装了oracle数据库服务器,想通过windowspl/sql客户端连接到服务器上,虚拟机的网络连接方式我设置为host-only. 去oracle官方网站下载instant ...
- 移动商城第三篇【搭建Mybatis和Spring环境、编写Dao、Service在Core模块】
Mybatis和Spring环境搭建 由于我们的所编写的dao层.service代码可能前台和后台都需要用到的,因此我们把环境搭建在core模块中 逆向工程 首先,我们要做的就是品牌管理,我们首先来看 ...
- 在linux环境下搭建java web测试环境(非常详细!!)
一.项目必备软件及基本思路 项目必备:虚拟机:VMware Workstation (已安装linux的 CentOS6.5版本) 项目:java web项目 (必须在本地部署编译后选择项目的webR ...
- 【二】刚学Python的几道简单练习题
python交友娱乐会所:613176398 1.使用while循环输入 1 2 3 4 5 6 8 9 10 2.求1-100的所有数的和 3.输出 1-100 内的所有奇数 4.输出 1- ...
- KMP算法的来龙去脉
1. 引言 字符串匹配是极为常见的一种模式匹配.简单地说,就是判断主串TT中是否出现该模式串PP,即PP为TT的子串.特别地,定义主串为T[0-n−1]T[0-n−1],模式串为P[0-p−1]P[0 ...
- SoapUI简介和入门实例解析
SoapUI简介 SoapUI是一个开源测试工具,通过soap/http来检查.调用.实现Web Service的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到Ecl ...