在 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>
最佳答案
这个问题有点老了,所以我不确定你是否有答案,但你可以做的是在图像的'tag'属性中设置某种标识符,你可以使用它来识别行(或者更准确地说是绑定(bind)到该行的对象)点击来自。我假设您正在将某种对象从集合绑定(bind)到行,并且“发送者”在您的事件中属于“图像”类型。
<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>
现在您可以访问绑定(bind)到单击的行的对象的 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
}
代码在这里
关于Silverlight 数据网格图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009232/