WPF Datagrid 焦点并突出显示最后一行
WPF Datagrid focus and highlighting last row
我想在我的数据网格中突出显示我最后新创建的行,我参考了此页面 http://social.technet.microsoft.com/wiki/contents/articles/21202.wpf-programmatically-selecting-and-focusing-a-row-or-cell-in-a-datagrid.aspx 以了解一些想法。
根据上面的参考资料link,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.
上时才有效
我的问题是如何高亮显示界面前的最后一行?或者是否有任何其他方法可以让我聚焦并突出显示新创建的行?
你是对的,它不能高亮显示,因为它还没有渲染。
但是您可以在那里利用调度程序。
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 以在渲染之后的优先级执行此操作。从视觉上看,这应该立即发生。
我想在我的数据网格中突出显示我最后新创建的行,我参考了此页面 http://social.technet.microsoft.com/wiki/contents/articles/21202.wpf-programmatically-selecting-and-focusing-a-row-or-cell-in-a-datagrid.aspx 以了解一些想法。
根据上面的参考资料link,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.
我的问题是如何高亮显示界面前的最后一行?或者是否有任何其他方法可以让我聚焦并突出显示新创建的行?
你是对的,它不能高亮显示,因为它还没有渲染。
但是您可以在那里利用调度程序。
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 以在渲染之后的优先级执行此操作。从视觉上看,这应该立即发生。