2012-03-05 3 views
0

Мы разрабатываем приложение в WPF, программируя с низким кодом. Мы используем много ресурсов MVVM и Binding. Я искал в Интернете, пытаясь найти способ сделать двойной щелчок по сетке без кода, и мы нашли проект AttachedCommandBehavior (http://marlongrech.wordpress.com/2008/12/13/ attachcommandbehavior-v2-aka-acb /), но мы получаем непредвиденную проблему:Как сделать двойной клик с AttachedCommandBehavior только внутри области DataGrid

Когда пользователь нажимает на DataGrid, работает нормально, но Mouse_Double_Click не следует запускать при щелчке по заголовку столбцов или ScrollViewer. Итак, как мы можем это исправить? Нам нужно, чтобы AttachedCommandBehavior запускает событие, когда пользователь нажимает только внутри области DataGrid. Я загрузил ваш источник, чтобы узнать, не получает ли он объект, но я его не нашел.

С уважением!

+0

вместо того, чтобы применять его на всей сетке, нанести его только на область сетки –

+0

Не работает, уже пробовал это. У вас есть пример, как заставить его работать? –

+0

Я забыл сказать что-то: у нас есть datagrids с более чем 60 столбцами, что делает его неосуществимым, столбцом по столбцу. –

ответ

0

Это, как мы решили проблему: Мы создали компонент UserControl как DataGrid, и в его код-сзади, добавили:

private void dtgExtended_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     if (sender is Control 
      && (!e.OriginalSource.ToString().Equals("Microsoft.Windows.Themes.ScrollChrome") && !e.OriginalSource.ToString().Equals("System.Windows.Shapes.Rectangle"))) 
     { 
      e.Handled = false; 
      DataGridDoubleClick c = new DataGridDoubleClick(); 
     } 
     else 
      e.Handled = true; 
    } 

В основном, это определяет только если пользователь нажмет внутри прямоугольника области ScrollBar или ScrollBar. Он не определяет, есть ли какой-либо щелчок в заголовке столбца.

Но, наконец, решила моя проблема.