wpf中如何实现控件的拖拽
4个回答
推荐于2016-05-12 · 知道合伙人互联网行家
关注
展开全部
想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已经拖拽过来。
步骤如下:
1. 设置ListBox 的AllowDrop属性为True
2. 在ListBoxItem 的Style中设置EventSetter
<Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
</Style>
3. 实现ListBoxItem_PreviewMouseLeftButtonDown
private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
{
ListBoxItem item = (sender as Control) as ListBoxItem;
if (item != null )
{
DataObject dataObject = new DataObject(item.DataContext);
DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy);//启动拖拽
}
}
4. 在目的控件也将AllowDrop的属性设为True,然后实现目的控件的Drop Event
private void ***Control_Drop(object sender, DragEventArgs e)
{
// 注册Drop事件用来接收数据。
IDataObject data = new DataObject();
data = e.Data;
object obj = data.GetData(typeof(YourDataContext));
if (obj != null)
{
Do your job
}
}
步骤如下:
1. 设置ListBox 的AllowDrop属性为True
2. 在ListBoxItem 的Style中设置EventSetter
<Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
</Style>
3. 实现ListBoxItem_PreviewMouseLeftButtonDown
private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
{
ListBoxItem item = (sender as Control) as ListBoxItem;
if (item != null )
{
DataObject dataObject = new DataObject(item.DataContext);
DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy);//启动拖拽
}
}
4. 在目的控件也将AllowDrop的属性设为True,然后实现目的控件的Drop Event
private void ***Control_Drop(object sender, DragEventArgs e)
{
// 注册Drop事件用来接收数据。
IDataObject data = new DataObject();
data = e.Data;
object obj = data.GetData(typeof(YourDataContext));
if (obj != null)
{
Do your job
}
}
展开全部
Microsoft.Expression.Interactions.dll 你上网下载这个
实例化一个 MouseDragElementBehavior对象
MouseDragElementBehavior.Attach(你要拖动的控件)
然后就可以了
还有一些DragFinished 之类的事件 你可以自己玩玩,挺好用的
实例化一个 MouseDragElementBehavior对象
MouseDragElementBehavior.Attach(你要拖动的控件)
然后就可以了
还有一些DragFinished 之类的事件 你可以自己玩玩,挺好用的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DragDrop.DoDragDrop()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
响应控件的MouseDown, DragEnter, DragLeave, DragOver, Drop事件即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询