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 ...
随机推荐
- 事后诸葛亮分析(Beta阶段)
设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决用户想要随时锻炼四则运算能力的问题:定义的很清楚:有清晰描述. 2.是否有充足的时间来做计划? ...
- Swing-BoxLayout用法-入门
注:本文内容源于http://www.java3z.com/cwbwebhome/article/article20/200016.html?id=4797:细节内容根据笔者理解有修改. BoxLay ...
- Java学习1——JDK(学前准备)
一.下载: 可以在http://www.oracle.com/technetwork/java/javase/downloads/index.html下载并安装Java SE(JDK) java大致版 ...
- 201521123086《java程序设计》第四周
本章学习总结 尝试使用思维导图总结有关继承的知识点 1.2 使用常规方法总结其他上课内容. 为了不必要写重复的代码,可以运用继承,用关键字extends来定义一个类,被继承的类叫做父类,继承的类叫做子 ...
- 201521123117 《Java程序设计》第3周学习总结
1. 本周学习总结: 2. 书面作业 Q1:代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- Java-高效地使用Exception-实践
注:本文翻译自Exceptional practices,共分为3节.该文章从实践的角度非常透彻地解释了为什么要处理异常,以及如何处理异常.这些都是那些只会介绍trycatchfinally语法的教材 ...
- 201521123112《Java程序设计》第12周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 将Student对象(属性:int id, String name,int age,double ...
- java课程设计——算术运算测试个人博客
1.团队课程设计链接 团队博客:http://www.cnblogs.com/yytx/p/7064790.html 2.个人负责模块 有关排行榜的界面设计和代码编写 3.自己的代码提交记录截图 4. ...
- 201521123089 《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-11.1 截图你的提交结果(出现学号) 1.2 自己以前编 ...
- 工作总结--如何定位web系统前后台的bug,以及bug分析/测试感想
对于web项目前台和后台bug定位分析:一. 系统整体了解 懒企鹅营销服务平台用的架构:web前端: Bootstrap 3.0 组件丰富,兼容性好,界面美观 Server端: jsp+Servlet ...