C# 如何在Windows 8 XAML应用程序中拖动元素?
XAML/C#Windows 8应用程序 我在XAML/C中使用了MouseDragElementBehavior来在屏幕上拖动元素 不幸的是,在为Windows 8开发应用程序时,交互程序集不起作用 如何在Windows 8 XAML应用程序中拖动元素 谢谢 编辑:我在这里找到了一个示例:C# 如何在Windows 8 XAML应用程序中拖动元素?,c#,xaml,windows-8,C#,Xaml,Windows 8,XAML/C#Windows 8应用程序 我在XAML/C中使用了MouseDragElementBehavior来在屏幕上拖动元素 不幸的是,在为Windows 8开发应用程序时,交互程序集不起作用 如何在Windows 8 XAML应用程序中拖动元素 谢谢 编辑:我在这里找到了一个示例: 只要复制代码,我就可以拖动我的元素。如果需要帮助,会更新某些问题。您需要处理要拖动的元素上的操作事件。另外,在元素上将操纵模式设置为非“无”的值 句柄操纵开始初始化拖动代码 处理操作Delta,检查e.De
只要复制代码,我就可以拖动我的元素。如果需要帮助,会更新某些问题。您需要处理要拖动的元素上的操作事件。另外,在元素上将操纵模式设置为非“无”的值
操纵开始
初始化拖动代码操作Delta
,检查e.Delta
值,并使用渲染变换偏移元素,或者如果在画布中,则使用画布坐标
希望这能有所帮助。下面是一个基于科林答案的过于简化的例子 考虑具有椭圆的画布:
<Canvas Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Ellipse Fill="Red"
Canvas.Left="100"
Canvas.Top="100"
Width="100"
Height="100"
ManipulationMode="All"
ManipulationDelta="Ellipse_ManipulationDelta_1"/>
</Canvas>
是否要从GridView/ListView或任何其他控件拖放项目?在第一种情况下,实现它的方法要简单得多。@RenaudDumont它不是listview,它只是一个项目,例如页面上的图标图像,用户可以将其拖动到页面上的任何位置。然后,我想要的是,当用户抬起手指/鼠标并释放元素时,它应该设置动画并返回到原始位置。使用这种更通用的解决方案:
private void Ellipse_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
Ellipse myEllipse = (Ellipse)sender;
Canvas.SetLeft(myEllipse, Canvas.GetLeft(myEllipse) + e.Delta.Translation.X);
Canvas.SetTop(myEllipse, Canvas.GetTop(myEllipse) + e.Delta.Translation.Y);
}