2012-05-05 53 views
2

在Windows窗體應用程序我們的數據網格視圖中有很多事件的像行鼠標雙擊或單擊行和額外...我怎樣才能鼠標雙擊添加到數據網格項目WPF

但在WPF我不能找到這些事件。 我怎樣才能行鼠標雙擊添加到我的用戶控件中有

我用,我用數據網格鼠標雙擊事件一些不好的方式做到了,以這種方式一些bug發生了數據網格但我想知道的簡單和標準的方式

我也row_load事件添加雙擊事件數據網格項目,但似乎我的程序慢,如果數據網格具有大源

private void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.MouseDoubleClick += new MouseButtonEventHandler(Row_MouseDoubleClick); 
} 

回答

7
在DataGrid元素

您可以處理雙擊,然後看事件源找到被點擊的行和列:

private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    DependencyObject dep = (DependencyObject)e.OriginalSource; 

    // iteratively traverse the visual tree 
    while ((dep != null) && !(dep is DataGridCell) && !(dep is DataGridColumnHeader)) 
    { 
     dep = VisualTreeHelper.GetParent(dep); 
    } 

    if (dep == null) 
     return; 

    if (dep is DataGridColumnHeader) 
    { 
     DataGridColumnHeader columnHeader = dep as DataGridColumnHeader; 
     // do something 
    } 

    if (dep is DataGridCell) 
    { 
     DataGridCell cell = dep as DataGridCell; 
     // do something 
    } 
} 

this blog post that I wrote描述這個詳細。

+0

謝謝你爲我工作的簡單和好:))太好了! –

0

科林的回答非常好,工作...我也使用這段代碼,這對我有用,並希望將它分享給其他人。

private void myGridView_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
     { 
      DependencyObject dep = (DependencyObject)e.OriginalSource; 

      // iteratively traverse the visual tree 
      while ((dep != null) && !(dep is DataGridRow) && !(dep is DataGridColumnHeader)) 
      { 
       dep = VisualTreeHelper.GetParent(dep); 
      } 

      if (dep == null) 
       return; 

      if (dep is DataGridRow) 
      { 
       DataGridRow row = dep as DataGridRow; 
       //here i can cast the row to that class i want 
      } 
     } 

,因爲我想知道,當所有的行點擊我用這個

相關問題