首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WPF上找到在DataGrid中点击的单元格的行值?

如何在WPF上找到在DataGrid中点击的单元格的行值?
EN

Stack Overflow用户
提问于 2013-11-20 21:00:49
回答 3查看 2.1K关注 0票数 2

我希望单击此数据网格的末尾行(在上图中)。单击此选项时,我希望能够找到被单击的行,并将行号传递给另一个表单。

下面是我尝试过的几个尝试:

代码语言:javascript
运行
复制
  private void CellClicked(object sender, MouseButtonEventArgs e)
    {
        int cell = dgFake.Items.IndexOf(((DataRowView)dgFake.Items[5]).Row);

        xamlAllocteAudits window = new xamlAllocteAudits
        {
            DataContext = cell
        };
        window.Show();

无论我在列中的哪个位置单击,此尝试都会保留为值'-1‘。

代码语言:javascript
运行
复制
private void CellClicked(object sender, MouseButtonEventArgs e)
    {
        int cell = dgFake.Items.IndexOf(dgFake.SelectedIndex);

        xamlAllocteAudits window = new xamlAllocteAudits
        {
            DataContext = cell
        };
        window.Show();

这次尝试显示了一个从'-1‘开始的不同的数字,每次我单击列中的单元格时都会递增,但即使我单击底部的单元格,第一次单击也始终是'-1',因此我假设这不是行号的值。

EN

回答 3

Stack Overflow用户

发布于 2013-11-20 21:12:48

您可以使用SelectionChanged事件来执行此操作:

代码语言:javascript
运行
复制
private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGrid.SelectedItems) 
    {
        int index = dataGrid.Items.IndexOf(row);
    }
}

如果你使用单行选择,那么你可以这样做:

代码语言:javascript
运行
复制
private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    int index = dataGrid.SelectedIndex;
}

如果您只想要单元格数据,那么可以这样做:

代码语言:javascript
运行
复制
private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    foreach (DataGridCellInfo cell in dataGrid.SelectedCells) 
    {
        // do something with cell
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-20 21:09:46

Ben看看code,它告诉你通过简单的导航到父级的技术来检测被点击的列、单元格和行的机制。

票数 0
EN

Stack Overflow用户

发布于 2013-11-20 21:12:21

类似的问题也被回答了,here看看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20096700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档