【问题标题】:WPF Datagrid focus and highlighting last rowWPF Datagrid 焦点并突出显示最后一行
【发布时间】:2015-02-26 09:09:25
【问题描述】:

我想在我的数据网格中突出显示我最后一个新的创建行,我参考了这个页面http://social.technet.microsoft.com/wiki/contents/articles/21202.wpf-programmatically-selecting-and-focusing-a-row-or-cell-in-a-datagrid.aspx 来了解一下。

根据上面datagrid的参考链接,首先要可视化。最后一行的原因是没有聚焦和高亮,可能是这个原因造成的。

以下是我的代码结构

    private void CommitRow(object sender, DataGridRowEditEndingEventArgs e )
    {
          //FIRE WHEN ROW IS DONE EDIT
          /*
          STORING DATA TO DATABASE
          */

          SelectRowByIndex(Datagrid, Datagrid.Items.Count - 1); //I refer from msdn blog
    }

我尝试将代码SelectRowByIndex 放入按钮中,它会突出显示最后一行。因此,我相信只有当网格出现在 UI 上时,代码才会起作用。

我的问题是如何在界面显示之前突出显示最后一行?还是有任何其他方法可以让我聚焦并突出显示新的创建行?

【问题讨论】:

    标签: c# wpf wpfdatagrid wpf-4.0


    【解决方案1】:

    你是对的,它不能被高亮,因为它还没有被渲染。

    但是你可以在那里使用调度程序来发挥你的优势。

     private void CommitRow(object sender, DataGridRowEditEndingEventArgs e )
        {
           //FIRE WHEN ROW IS DONE EDIT
           /*
           STORING DATA TO DATABASE
           */
    
        Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
        {
            SelectRowByIndex(Datagrid, Datagrid.Items.Count - 1);
        }));
     }
    

    这应该可以解决问题。它调用 Dispatcher 以在渲染后的优先级执行此操作。从视觉上看,这应该会立即发生。

    【讨论】:

    • 我明白了,谢谢@haggy
    • 哦,是的,应该已经指定了。编辑它以防其他人偶然发现。
    猜你喜欢
    • 2011-10-01
    • 2023-03-29
    • 2012-10-06
    • 1970-01-01
    • 2013-06-11
    • 2011-05-27
    • 1970-01-01
    • 2012-06-17
    • 2015-10-31
    相关资源
    最近更新 更多