Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows phone 8按用户在网格中拖放网格_C#_Xaml_Windows Phone 8_Drag And Drop_Grid - Fatal编程技术网

C# Windows phone 8按用户在网格中拖放网格

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和

我有一个应用程序,它有一个带有堆栈面板和堆栈查看器的大网格。里面有多个网格沿着页面向下延伸。用户是否可以拖放这些网格,使它们位于不同的位置。他们应该能够将网格向上或向下移动一个网格或将网格相乘。如果在每个网格的右上角有一个按钮,当用户按住该按钮时,他们可以在stackpanel、stackviewer中向上或向下移动网格


感谢您的帮助:)

尝试使用网格上的保持事件来定义要移动的对象。(您可以操纵背景色以显示网格现在可以移动)

然后使用网格的操纵事件来移动控件(操纵增量和操纵完成)。操纵增量将在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);
        }

张贴您尝试至今的代码张贴您尝试至今的代码