WPF Datagrid聚焦并突出显示最后一行

时间:2015-02-26 09:09:26

标签: c# wpf wpfdatagrid wpf-4.0

我想在我的数据网格中突出显示我最后一个新的创建行,我已经参考了这个页面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上时才有效。

我的问题是如何在界面显示之前突出显示最后一行?或者是否有任何其他方法允许我聚焦并高亮显示新的创建行?

1 个答案:

答案 0 :(得分:4)

你是对的,它不能突出显示,因为它还没有被渲染。

但你可以在那里使用调度员。

 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以渲染后的优先级来执行它。在视觉上,这应该立即发生。