2011-05-28 105 views
0

我在xaml中有一個網格,它包含一行中的圖像/文本塊/按鈕。爲了行響應單擊我在cs文件中添加了以下代碼。MouseLeftButtonDownEvent發射兩次

this.radFilestoPrint.CellLoaded += new EventHandler<Telerik.Windows.Controls.GridView.CellEventArgs>(filesToPrintGrid_CellLoaded); 

void filesToPrintGrid_CellLoaded(object sender, Telerik.Windows.Controls.GridView.CellEventArgs e) 
     { 
      if (e.Cell.Column != radFilestoPrint.Columns[4] && e.Cell.Column != radFilestoPrint.Columns[5]) 
      { 
       e.Cell.AddHandler(GridViewCell.MouseLeftButtonDownEvent, new MouseButtonEventHandler(radFilestoPrint_MouseDoubleClick), true); 
      } 
     } 

現在的問題是,mousedownevent發射兩次。我檢查了下面的消息來源,發現它來自圖像本身。我在處理完郵件後設置了e.Handled = true,即使我注意到我從第一次開始就收到e.Handled

if (((FrameworkElement)e.Source).GetType() != typeof(System.Windows.Controls.Image)) 
    { 
     return;  
    } 

事件爲什麼發射兩次?我應該如何防止它?

請指教。

Regards,

John。

+0

你確切的一個bug,問題是? – ChrisWue 2011-05-28 07:34:21

+0

事件爲什麼發射兩次?我應該如何防止它? – logeeks 2011-05-28 07:36:03

回答

1

我想也許你在worst place處理你的事件,它處理了2次,並與單羽絨事件它引發兩個事件。

的foreach細胞加載不適合您的指定列
在其他地方嘗試處理您的事件

+0

感謝您的建議...然後它應該發射3次。 – logeeks 2011-05-28 07:47:35

+1

可能是你處理你的'cellloaded事件'兩次的 – Rev 2011-05-28 07:57:19

+0

是的,它會得到處理,因爲有四列。我想只是將處理程序添加到單元格。如果有一個單元格處理程序,它將被替換。 – logeeks 2011-05-28 07:59:18