【问题标题】:Silverlight datagrid imageSilverlight 数据网格图像
【发布时间】:2011-01-01 19:51:31
【问题描述】:

在 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>

【问题讨论】:

    标签: silverlight datagrid


    【解决方案1】:

    这个问题有点老了,所以我不确定你是否有答案,但你可以做的是在图像的'tag'属性中设置某种标识符,你可以用来识别点击来自的行(或更准确地说是绑定到该行的对象)。我假设您正在将某种对象从集合绑定到行,并且“发送者”在您的事件中属于“图像”类型。

    <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
    }
    

    代码在这里

    【讨论】:

      【解决方案2】:

      您是否在您的事件处理程序中将e.Handled 设置为true?如果是这样,那么数据网格将不会看到鼠标按下事件。

      【讨论】:

      • 事件被触发,但是当我输出 MyDataGrid.SelectedIndex 时,我得到的是先前选择的列的索引,而不是单击图像的列,
      • 你是否设置为true?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多