Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 在WPF桌面应用程序中无目的地拖放_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 在WPF桌面应用程序中无目的地拖放

C# 在WPF桌面应用程序中无目的地拖放,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我发现在没有拖放目标的情况下,在我的应用程序中拖放任何控件(我计划允许任何控件)都非常困难。我只想从这里拖动任何控件。。。到“那边某处”。但这似乎不可能。这可能吗?您只需几行代码就可以在WinForms中实现拖放,我们如何在WPF中获得相同的拖放支持?您在问题中所描述的内容以及澄清的注释更多地是关于重新定位元素,而不是拖放 这种类型的活动在WPF中相当容易,唯一需要考虑的是包含元素的布局面板。由于WPF试图围绕布局提供更多的结构(使用网格、堆叠面板等),因此您需要一个允许元素自由定位的面板。这将

我发现在没有拖放目标的情况下,在我的应用程序中拖放任何控件(我计划允许任何控件)都非常困难。我只想从这里拖动任何控件。。。到“那边某处”。但这似乎不可能。这可能吗?您只需几行代码就可以在WinForms中实现拖放,我们如何在WPF中获得相同的拖放支持?

您在问题中所描述的内容以及澄清的注释更多地是关于重新定位元素,而不是拖放

这种类型的活动在WPF中相当容易,唯一需要考虑的是包含元素的布局面板。由于WPF试图围绕布局提供更多的结构(使用
网格
堆叠面板
等),因此您需要一个允许元素自由定位的面板。这将调用
画布


因此,如果您有一个带有元素的
画布
(例如用
Canvas.Left
Canvas.Top
定位),您可以使用
鼠标向下
鼠标移动
鼠标移动
来允许用户在画布上拖动/重新定位元素

您在问题和澄清性评论中描述的内容更多的是关于重新定位元素,而不是拖放

这种类型的活动在WPF中相当容易,唯一需要考虑的是包含元素的布局面板。由于WPF试图围绕布局提供更多的结构(使用
网格
堆叠面板
等),因此您需要一个允许元素自由定位的面板。这将调用
画布


因此,如果您有一个带有元素的
画布
(例如用
Canvas.Left
Canvas.Top
定位),您可以使用
鼠标向下
鼠标移动
鼠标移动
来允许用户在画布上拖动/重新定位元素

您是希望在画布上自由重新定位(移动)控件,还是真的希望“拖放”?拖放意味着您有一个拖放目标,例如,将列表项从一个列表移动到另一个列表,或对列表中的项重新排序。如果您只是想让用户重新定位窗口上的控件,则这是另一种操作。是的,这是正确的。我只想将控件从窗口上的一个位置移动到另一个位置。不管它来自哪里。我不想拖动列表项(但我确实想拖拽整个ListView控件。我对WPF中的这一点感到困惑,因为在WinForms中,我们只需要在运行时处理要移动的控件的MouseDown、MouseMove和MouseUp事件。但是许多控件在WPF中没有这些事件。请参见下面的答案。关键是使用允许自由格式posi的
画布
)子控件的重新定位。您是希望在画布上自由地重新定位(移动)控件,还是希望“拖放”?拖放意味着您有一个拖放目标,例如,将列表项从一个列表移动到另一个列表,或对列表中的项目重新排序。如果您只是想让用户重新定位窗口上的控件,则这是另一种操作。是的,这是正确的。我只想将控件从窗口上的一个位置移动输入到另一个位置。无论它来自何处。我不想拖动列表项(但我确实想拖拽整个ListView控件。我对WPF中的这一点感到困惑,因为在WinForms中,我们只需要在运行时处理要移动的控件的MouseDown、MouseMove和MouseUp事件。但是许多控件在WPF中没有这些事件。请参见下面的答案。关键是使用允许自由格式posi的
画布
)子控件的重新命名。