我想在我的数据网格中突出显示我最后一个新的创建行,我已经参考了这个页面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上时才有效。
我的问题是如何在界面显示之前突出显示最后一行?或者是否有任何其他方法允许我聚焦并高亮显示新的创建行?
答案 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以渲染后的优先级来执行它。在视觉上,这应该立即发生。