C# Windows phone 8按用户在网格中拖放网格
我有一个应用程序,它有一个带有堆栈面板和堆栈查看器的大网格。里面有多个网格沿着页面向下延伸。用户是否可以拖放这些网格,使它们位于不同的位置。他们应该能够将网格向上或向下移动一个网格或将网格相乘。如果在每个网格的右上角有一个按钮,当用户按住该按钮时,他们可以在stackpanel、stackviewer中向上或向下移动网格C# Windows phone 8按用户在网格中拖放网格,c#,xaml,windows-phone-8,drag-and-drop,grid,C#,Xaml,Windows Phone 8,Drag And Drop,Grid,我有一个应用程序,它有一个带有堆栈面板和堆栈查看器的大网格。里面有多个网格沿着页面向下延伸。用户是否可以拖放这些网格,使它们位于不同的位置。他们应该能够将网格向上或向下移动一个网格或将网格相乘。如果在每个网格的右上角有一个按钮,当用户按住该按钮时,他们可以在stackpanel、stackviewer中向上或向下移动网格 感谢您的帮助:)尝试使用网格上的保持事件来定义要移动的对象。(您可以操纵背景色以显示网格现在可以移动) 然后使用网格的操纵事件来移动控件(操纵增量和操纵完成)。操纵增量将在X和
感谢您的帮助:)尝试使用网格上的保持事件来定义要移动的对象。(您可以操纵背景色以显示网格现在可以移动) 然后使用网格的操纵事件来移动控件(操纵增量和操纵完成)。操纵增量将在X和Y域中提供平移。使用Y平移按指定的平移向上或向下移动对象。然后,可以使用操纵完成来定义栅格已完成移动 即
private void holdEvent(对象发送方,System.Windows.Input.GestureEventArgs e)
{
//更改“练习”标签的背景
网格=(网格)发送方;
网格。背景(颜色。灰色);
//应用操作事件
grid.manufactionDelta+=新事件处理程序(GridMoving);
grid.OperationCompleted+=新事件处理程序(GridMoved);
}
私有void GridMoving(对象发送器,操纵deltaeventargs e)
{
//在此处操纵栅格的位置
}
私有void ExerciseMoved(对象发送方,操纵完成事件参数)
{
//更改背景颜色
网格=(网格)发送方;
grid.setBackground(Colors.White);//在此处使用原始颜色
//从指定的网格中删除操纵事件,使其不会移动,
//当用户尝试移动其他网格时。
grid.ManufactionDelta-=练习移动;
grid.ManipulationCompleted-=ExerciseMoved;
}
尝试使用网格上的保持事件来定义要移动的对象。(您可以操纵背景色以显示网格现在可以移动)
然后使用网格的操纵事件来移动控件(操纵增量和操纵完成)。操纵增量将在X和Y域中提供平移。使用Y平移按指定的平移向上或向下移动对象。然后,可以使用操纵完成来定义栅格已完成移动
即
private void holdEvent(对象发送方,System.Windows.Input.GestureEventArgs e)
{
//更改“练习”标签的背景
网格=(网格)发送方;
网格。背景(颜色。灰色);
//应用操作事件
grid.manufactionDelta+=新事件处理程序(GridMoving);
grid.OperationCompleted+=新事件处理程序(GridMoved);
}
私有void GridMoving(对象发送器,操纵deltaeventargs e)
{
//在此处操纵栅格的位置
}
私有void ExerciseMoved(对象发送方,操纵完成事件参数)
{
//更改背景颜色
网格=(网格)发送方;
grid.setBackground(Colors.White);//在此处使用原始颜色
//从指定的网格中删除操纵事件,使其不会移动,
//当用户尝试移动其他网格时。
grid.ManufactionDelta-=练习移动;
grid.ManipulationCompleted-=ExerciseMoved;
}
您可以使用Microsoft.Phone.Controls.GestureListener
中的DragStarted
和DragCompleted
事件,该事件可在中找到
希望此链接可以帮助您:
我们也来看看这些:
希望有帮助 您可以使用Microsoft.Phone.Controls.GestureListener中的
DragStarted
和DragCompleted
事件,该事件可在中找到
希望此链接可以帮助您:
我们也来看看这些:
希望有帮助 任何操纵增量事件请尝试此代码
private void Images_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
if (e.PinchManipulation != null)
{
ImagesRoatate.ScaleX = e.PinchManipulation.CumulativeScale;
ImagesRoatate.ScaleY = e.PinchManipulation.CumulativeScale;
Point OriginalCenter = e.PinchManipulation.Original.Center;
Point NewCenter = e.PinchManipulation.Current.Center;
ImagesRoatate.TranslateX = NewCenter.X - OriginalCenter.X;
ImagesRoatate.TranslateY = NewCenter.Y - OriginalCenter.Y;
ImagesRoatate.Rotation = angleBetween2Lines(e.PinchManipulation.Current, e.PinchManipulation.Original);
e.Handled = true;
}
else
{
ImagesRoatate.TranslateX += e.DeltaManipulation.Translation.X;
ImagesRoatate.TranslateY += e.DeltaManipulation.Translation.Y;
}
System.Diagnostics.Debug.WriteLine("Images Actual Width :- {0},Images Actual Height :- {1}", Images.ActualWidth, Images.ActualHeight);
}
任何操纵增量事件都可以尝试此代码
private void Images_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
if (e.PinchManipulation != null)
{
ImagesRoatate.ScaleX = e.PinchManipulation.CumulativeScale;
ImagesRoatate.ScaleY = e.PinchManipulation.CumulativeScale;
Point OriginalCenter = e.PinchManipulation.Original.Center;
Point NewCenter = e.PinchManipulation.Current.Center;
ImagesRoatate.TranslateX = NewCenter.X - OriginalCenter.X;
ImagesRoatate.TranslateY = NewCenter.Y - OriginalCenter.Y;
ImagesRoatate.Rotation = angleBetween2Lines(e.PinchManipulation.Current, e.PinchManipulation.Original);
e.Handled = true;
}
else
{
ImagesRoatate.TranslateX += e.DeltaManipulation.Translation.X;
ImagesRoatate.TranslateY += e.DeltaManipulation.Translation.Y;
}
System.Diagnostics.Debug.WriteLine("Images Actual Width :- {0},Images Actual Height :- {1}", Images.ActualWidth, Images.ActualHeight);
}
张贴您尝试至今的代码张贴您尝试至今的代码