13

WPFに関する2つのリストビューがあります。最初のリストビューにはDatatableがロードされます。最初のリストビューから1つのアイテムをダブルクリックすると、選択したアイテムが2番目のリストビューに移動します。

DataTableからロードされた多くの要素が原因で、最初のリストビューにスクロールバーが表示される場合に問題が発生します。1つのアイテムを選択し、スクロールバーの下矢印をダブルクリックすると、MouseDoubleClickイベントが起動し、選択したアイテムが2番目のリストビューに移動します。

これを防ぐために、スクロールバーのダブルクリックを検出するにはどうすればよいですか?

どうもありがとう!

4

4 に答える 4

6

非常に役立つ上記のコードをテストしましたが、実際には項目をダブルクリックしているときにソースが GridViewRowPresenter として報告されることがあるため、次のコードの方が安定していることがわかりました。

var src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);
var srcType = src.GetType();
if (srcType == typeof(ListViewItem) || srcType == typeof(GridViewRowPresenter))
{
    // Your logic here
}
于 2010-09-08T13:26:46.613 に答える
3

最初のリストビューの MouseDoubleClick イベントでこれを試してください:

DependencyObject src = VisualTreeHelper.GetParent((DependencyObject)e.OriginalSource);

if(src is Control && src.GetType() == typeof(ListViewItem))
{
    // Your logic here
}

これに基づい

私はこれをさまざまなプロジェクトで使用しており、直面している問題を解決します。

于 2010-08-04T09:45:42.387 に答える
3
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
  }         
}

DataContext があると、送信者がアイテムなのかメイン リストボックスなのかを簡単に確認できます

于 2014-05-06T07:21:42.737 に答える