How to detect double click on list view scroll bar?

后端 未结 4 1712
长情又很酷
长情又很酷 2021-02-20 00:40

I have two list view on WPF. The first listview is loaded with a Datatable. When double clicking on one item from the first listview, the selectedItem is moved to the second lis

相关标签:
4条回答
  • 2021-02-20 01:04

    I've got the final solution:

    private void ListView_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        var originalSource = (DependencyObject)e.OriginalSource;
        while ((originalSource != null) && !(originalSource is ListViewItem)) originalSource = VisualTreeHelper.GetParent(originalSource);
        if (originalSource == null) return;
    }
    

    it works for me.

    0 讨论(0)
  • 2021-02-20 01:15

    Try this in you MouseDoubleClick event on the first Listview:

    DependencyObject src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);
    
    if(src is Control && src.GetType() == typeof(ListViewItem))
    {
        // Your logic here
    }
    

    Based on this.

    I am using this in various projects and it solves the problem you are facing.

    0 讨论(0)
  • 2021-02-20 01:16

    I tested the above code which was very helpful, but found the following to be more stable, as sometimes the source gets reported as GridViewRowPresenter when in fact you are double clicking an item.

    var src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);
    var srcType = src.GetType();
    if (srcType == typeof(ListViewItem) || srcType == typeof(GridViewRowPresenter))
    {
        // Your logic here
    }
    
    0 讨论(0)
  • 2021-02-20 01:21
    private void ListBox_OnMouseDoubleClick(object pSender, MouseButtonEventArgs pE)
    {
      FrameworkElement originalSource = pE.OriginalSource as FrameworkElement;
      FrameworkElement source = pE.Source as FrameworkElement;
    
      if (originalSource.DataContext != source.DataContext)
      {
          logic here
      }         
    }
    

    When you have the DataContext you can easy see if the sender is an item or the main listbox

    0 讨论(0)
提交回复
热议问题