我有一个带有可编辑项目的数据网格,我有一个按钮来创建这样一个项目的新实例。数据网格使用新项目进行更新,但我无法选择最近添加的项目并开始编辑。
以下是我的代码:
private void btnNewKenmerk_Click( object sender, RoutedEventArgs e )
{
Kenmerk newKenmerk = new Kenmerk(); // the item to add
Kenmerken.Add( newKenmerk ); // this is an observablecollection. the datagrid (dgKenmerken) has this as itemssource
// deselect all other items except our new kenmerk
for( int i = 0; i < dgKenmerken.Items.Count; i++ )
{
Kenmerk kenmerk = ( Kenmerk )dgKenmerken.Items[ i ];
DataGridRow dgRow = ( DataGridRow )dgKenmerken.ItemContainerGenerator.ContainerFromIndex( i );
if( dgRow != null )
{
dgRow.IsSelected = ( kenmerk == newKenmerk );
}
}
dgKenmerken.SelectedItem = newKenmerk;
// start editing
if( DataGrid.BeginEditCommand.CanExecute( newKenmerk, dgKenmerken ) )
{
DataGrid.BeginEditCommand.Execute( newKenmerk, dgKenmerken );
}
}
添加项目并更改行的背景,但BeginEditCommand开始编辑我之前选择的项目,而不是添加的项目。任何人都有任何线索如何解决这个问题?
答案 0 :(得分:1)
这是因为数据网格没有立即“看到”更改。使用新添加的数据推迟 - 请尝试将您的方法分为两个 - 一个添加,第二个使用。从第一个呼叫第二个,不是直接呼叫,而是通过调度员。