我们会使用控件拖动,可以让我们做出好看的动画,那么我们如何移动控件,我将会告诉大家多个方法。其中第一个是最差的,最后的才是我希望大神你去用。
<!--more-->
Margin 移动
我们可以使用Margin移动,但这是wr说不要这样做。
We can move the control by Margin,but using this method is not recommended.
我们可以在xaml写一个Button,然后就使用左键获取鼠标,这个可以去看 win10 uwp 获取按钮鼠标左键按下
http://lindexi.oschina.io/lindexi/post/win10-uwp-%E8%8E%B7%E5%8F%96%E6%8C%89%E9%92%AE%E9%BC%A0%E6%A0%87%E5%B7%A6%E9%94%AE%E6%8C%89%E4%B8%8B/
于是在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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
Win10 UWP 开发教程 课程 资源 80课时 课程地址:http://blog.csdn.net/shanguuncle/article/details/78111649
全选设置之后UWP即可访问localhost,可以走代理。
总结来说,"win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 例子"提供了一个实际操作的平台,让开发者学习如何在UWP环境中利用MVVM模式进行开发。通过分析和实践这个框架,你将能够更好地理解MVVM的工作原理,以及如何...
下面我们将深入探讨如何在Win10下通过UWP实现这些功能。 首先,我们需要了解UWP(Universal Windows Platform)是微软为Windows 10推出的一种跨设备的应用程序开发框架。它允许开发者编写一次代码,就能在各种...
在Windows 10 UWP应用开发中,常常需要创建一种用户友好的交互方式,即当用户右键点击某个元素时,能在一个特定的位置显示一个浮出菜单(MenuFlyout)。本篇文章将详细介绍如何使用C#实现这样的功能,使得MenuFlyout...
**UWP(Universal Windows Platform)** 是微软推出的一种跨平台应用程序框架,旨在为Windows 10设备提供统一的开发体验,覆盖从手机、平板到PC甚至Xbox等不同硬件平台。开发者可以使用C#编程语言来创建UWP应用,...
在本文中,我们将探讨如何利用Windows 10的UWP(通用Windows平台)应用程序与ASP.NET Core构建一个图床服务器的客户端。这是一个涉及到跨平台开发和云端图像存储管理的项目,旨在提供一种高效且灵活的方式来上传和...
Android 中使用 UWP 控件实现进度条 Marquez 效果 本文主要介绍了在 Android 中使用 UWP 控件实现进度条 Marquez 效果的方法。进度条控件是游戏开发中常用的控件之一,能够显示游戏的进度,提高用户的游戏体验。 ...
win10 moblie uwp qq5.6.1150.1000主程序,不含依赖程序
win10 moblie uwp 越飞阅读1.4.68.0主程序,不含依赖程序
title: "win10 uwp 字符文本转语音声音文件方法"在 UWP 中,支持将传入的字符串文本内容转换为音频语音,可以将这个语音声音通过 MediaEl
在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)项目中引用UWP(Universal Windows Platform)控件,而不将整个应用打包为MSIX(Microsoft Store for Business and Education的安装包格式)...
首先打开 使用微软的账号或 github 账号登陆点击 add new 添加一个 UWP 程序,需要写出 app 的
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上...
UWP是微软为Windows 10设计的一种新型应用模型,它支持跨设备运行,并提供了现代化的UI元素。而WPF则是.NET Framework的一部分,用于构建丰富的桌面应用,拥有强大的数据绑定和图形渲染能力。 集成UWP控件到WPF应用...
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上安装...
如果需要反过来,把同步转异步,可以使用 同步方法转异步写你的代码使用Task.Wait 时需要小心死锁不会出现死锁的代码使用Task.Delay等待即使使用方法
我朋友在做一个控件,是显示异常,那么异常多就变为颜色,大概就是下面的图,很简单首先是一个Ellipse,然后把他的颜色绑定到Int,需要一个转换,UWP的转换和
UwpProjects, 一组UWP控件和实用工具 UwpProjects 我已经构建并用作 Windows 开发的一组UWP控件和实用工具。 我将继续从我的个人colleciton和bobbles的个人中添加这个,并作为一个新的。##Contents在 /中,Adaptive