2012-03-05 69 views
0

我們正在WPF開發一個應用程序,使用低代碼隱藏進行編程。我們使用了很多MVVM和綁定資源。我搜索了網頁,試圖找到一種方法來在沒有代碼隱藏的情況下雙擊網格,並且我們找到了AttachedCommandBehavior項目(http://marlongrech.wordpress.com/2008/12/13/但是我們遇到了一個意外問題:如何雙擊DataGrid區域內的AttachedCommandBehavior

當用戶點擊DataGrid時,工作正常,但在單擊Columns Header或ScrollViewer時不應觸發Mouse_Double_Click。那麼,我們如何解決它?當用戶僅在DataGrid的區域內單擊時,我們需要比AttachedCommandBehavior觸發事件。 我已經下載了你的源代碼,看看他是否得到了什麼對象正在點擊,但我沒有找到它。

此致敬禮!

+0

而不是將其應用於整個網格,只把它放在網格區域 – 2012-03-05 20:30:57

+0

不起作用,已經試過了。你有一個如何使它工作的例子嗎? – 2012-03-05 20:34:23

+0

我忘了說點什麼:我們有超過60列的datagrid,這使得它不可行,逐列。 – 2012-03-06 11:39:08

回答

0

這是我們如何解決這個問題:我們已經創建了一個用戶控件組件作爲一個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中。它不能識別是否有任何點擊到列的標題。

但終於解決了我的問題。