gpt4 book ai didi

WPF - 拖放 - 装饰器在控件之外消失

转载 作者:行者123 更新时间:2023-12-02 02:24:44 31 4
gpt4 key购买 nike

我正在使用 WPF 创建两个 ListView 并实现拖放功能。 ( ListView 内和 ListView 间)

我发现了一个有趣的帖子 here这样做的。

但是,有一个问题。当我从 listView1 中拖动一个 listviewitem 时,我只在 listView1 中看到装饰器(幻影图像)。当我想将 listviewItem 放到 ListView2 上时,我也必须在那里看到装饰器。基本上,装饰器只出现在拖动操作开始的 listView 上。一旦它在 listView 之外,它就会消失。

我做了一些研究,但找不到使装饰器在启动拖动的控件之外可见的方法。

谁能帮我提点建议?

最佳答案

连接 GiveFeedback 事件以更新 ListView 之外的装饰器位置。从下面的示例和方法更新了 ListView 属性(并且在 listview_DragLeave 方法中您不想折叠装饰器):

    /// <summary>
/// Gets/sets the ListView whose dragging is managed. This property
/// can be set to null, to prevent drag management from occuring. If
/// the ListView's AllowDrop property is false, it will be set to true.
/// </summary>
public ListView ListView
{
get { return listView; }
set
{
if( this.IsDragInProgress )
throw new InvalidOperationException( "Cannot set the ListView property during a drag operation." );

if( this.listView != null )
{
#region Unhook Events

this.listView.PreviewMouseLeftButtonDown -= listView_PreviewMouseLeftButtonDown;
this.listView.PreviewMouseMove -= listView_PreviewMouseMove;
this.listView.DragOver -= listView_DragOver;
this.listView.DragLeave -= listView_DragLeave;
this.listView.DragEnter -= listView_DragEnter;
this.listView.GiveFeedback -= listView_GiveFeedback;
this.listView.Drop -= listView_Drop;

#endregion // Unhook Events
}

this.listView = value;

if( this.listView != null )
{
if( !this.listView.AllowDrop )
this.listView.AllowDrop = true;

#region Hook Events

this.listView.PreviewMouseLeftButtonDown += listView_PreviewMouseLeftButtonDown;
this.listView.PreviewMouseMove += listView_PreviewMouseMove;
this.listView.DragOver += listView_DragOver;
this.listView.DragLeave += listView_DragLeave;
this.listView.DragEnter += listView_DragEnter;
this.listView.GiveFeedback += listView_GiveFeedback;
this.listView.Drop += listView_Drop;

#endregion // Hook Events
}
}
}

void listView_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
if (this.ShowDragAdornerResolved)
this.UpdateDragAdornerLocation();
}

关于WPF - 拖放 - 装饰器在控件之外消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434836/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com