WPF中的DataGrid鼠标双击事件

3

我使用WPF创建了一个应用程序,其中在数据网格中显示了一些数据。目前,我已经使用选择更改事件从数据网格中获取数据。以下是我的代码:

private void datagrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DataGrid dg = sender as DataGrid;
            DataRowView dr = dg.SelectedItem as DataRowView;
            if (dr != null)
            {
                int id = Convert.ToInt32(dr["Id"].ToString());
           }
}

当用户双击数据网格时,我需要获取数据。这可能吗?


你正在使用 MVVM 吗? - sujith karivelil
不返回方法后面的代码。 - Abdul Manaf
2个回答

3

XAML:

<DataGrid MouseDown="datagrid1_MouseDown"></DataGrid>

代码后台:

private void datagrid1_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2)
    {
        DataGrid dg = sender as DataGrid;
        DataRowView dr = dg.SelectedItem as DataRowView;
        if (dr != null)
        {
            int id = Convert.ToInt32(dr["Id"].ToString());
        }
    }
}

提示:您可以使用 null propagation 使您的代码更加健壮:

var idStr = ((sender as DataGrid)?.SelectedItem as DataRowView)?["Id"]?.ToString();
if (idStr != null)
{
    int id = Convert.ToInt32(idStr);
}

1
在XAML中:
<datagrid name="datagrid1" ... mousedoubleclick="datagrid1_MouseDoubleClick"></datagrid>

使用以下代码:

private void datagrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    DataGrid dg = sender as DataGrid;

   if (dg!= null && dg.SelectedItems != null && dg.SelectedItems.Count == 1)
   {
       DataRowView dr = dg.SelectedItem as DataRowView;
       int id = Convert.ToInt32(dr["Id"].ToString());
   }
}

我希望它能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接