【问题标题】:WPF - Drag & Drop on Listbox ITEMWPF - 拖放列表框项目
【发布时间】:2009-10-20 19:26:04
【问题描述】:

我不想在整个 ListBox 上放置一些东西,而是在特定的 ListBoxItem 上放置一些东西。我正在处理 ListBox 的 Drop 事件 - 我怎样才能知道鼠标指向哪个项目?

【问题讨论】:

    标签: c# wpf user-interface drag-and-drop


    【解决方案1】:
    if (e.Data.GetDataPresent(typeof(Songs))) 
     { 
       var result = VisualTreeHelper.HitTest(myCanvas, Mouse.GetPosition(this.Playlists));
     }
    

    如果使用画布,请尝试相对于画布执行命中测试(将“myCanvas”替换为参考)

    【讨论】:

    • 播放列表是否包含在 Canvas 中?
    【解决方案2】:

    我现在设法解决了这个问题,方法是设置 AllowDropDrop 事件处理程序,而不是在 ListBox 上,而是在 ItemTemplate 中的控件上。

    【讨论】:

    • @lll 如果您需要支持(多个)空项目,则无法使用,我自己也遇到了这个问题。
    【解决方案3】:

    您可以使用VisualTreeHelper.HitTest 来确定哪个 ListViewItem 在给定点。也就是说,很可能有一种更简单的方法可以满足您的要求,但没有足够的信息继续下去。

    【讨论】:

    • 我试过这个代码: if (e.Data.GetDataPresent(typeof(Songs))) { var result = VisualTreeHelper.HitTest(this.Playlists, Mouse.GetPosition(this.Playlists)); (在 Drop-handler 中)但它总是返回 null!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多