2010-01-05 63 views
3

在Silverlight應用程序,我有一個形象作爲第一列一個DataGrid(請參閱下面的代碼我使用)的Silverlight數據網格圖像

當我點擊我捕捉MouseLeftButtonDown事件的圖像上,問題我我下運行的是,同時點擊圖像上DataGrid中的SelectedIndex是不會改變因此,我不知道被點擊哪一行。

<data:DataGridTemplateColumn Width="25"> 
    <data:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Image Width="20" Stretch="Fill" Name="Delete" Source="/Portal;Component/Images/Delete.png" MouseLeftButtonDown="ImageDelete_MouseLeftButtonDown"/> 
     </DataTemplate> 
    </data:DataGridTemplateColumn.CellTemplate> 
</data:DataGridTemplateColumn> 

回答

0

你在每個機會,你的事件處理程序設置e.Handledtrue?如果是這樣,那麼數據網格將不會看到鼠標停止事件。

+0

事件正在被解僱,但是當我輸出 MyDataGrid.SelectedIndex時,我得到了先前選擇的co的索引lumn而不是點擊圖像的那個, – Raj 2010-01-05 21:40:20

+0

你是否將處理設置爲true? – AnthonyWJones 2010-01-05 21:49:36

+0

不會將它設置爲true – Raj 2010-05-13 06:35:14

1

這個問題是慈祥的老人,所以我不知道你是否有答案或沒有,但你可以做的是設置某種標識符的,你可以用它來對圖像的「標籤」屬性標識點擊來自的行(或更確切地說是綁定到該行的對象)。我假設你將某個對象從一個集合綁定到該行,並且'發件人'在你的事件中是'image'類型的。

<data:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Image Width="20" Stretch="Fill" Name="Delete" Source="/Portal;Component/Images/Delete.png" MouseLeftButtonDown="ImageDelete_MouseLeftButtonDown" Tag="{Binding Id}"/> 
    </DataTemplate> 
</data:DataGridTemplateColumn.CellTemplate> 

現在您可以訪問綁定到被點擊的,像這樣的行對象的ID ...(在VB)

Private Sub ImageDelete_MouseLeftButtonDown(sender As System.Object, e As System.Windows.Input.MouseButtonEventArgs) 
     Dim img As Image = TryCast(sender, Image) 
     Dim id As Integer = CInt(img.Tag) 
     ' Do stuff with id 
    End Sub 

在C#:

Private void ImageDelete_MouseLeftButtonDown(System.Object sender, System.Windows.Input.MouseButtonEventArgs e) 
{ 
    Image img = sender as Image; 
    int id = Convert.ToInt32(img.Tag); 
    // do stuff with id 
} 

這裏的代碼