WPF 数据网格开始编辑新项目
我有一个数据网格,其中包含可编辑的项目,并且有一个按钮可以创建此类项目的新实例。数据网格已使用新项目进行更新,但我无法选择最近添加的项目并开始对其进行编辑。
下面是我的代码:
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 开始编辑我之前选择的项目,而不是添加的项目。有人知道如何解决这个问题吗?
I have a datagrid with editable items in it and I have a button to create a new instance of such an item. The datagrid is updated with the new item but I can't select the recently added item and start editing on it.
Below is my code:
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 );
}
}
The item is added and the background of the row is changed, but the BeginEditCommand starts editing on my previous selected item, not the added item. Anyone has any clue how to fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为数据网格不会立即“看到”更改。推迟使用新添加的数据 - 请尝试将您的方法分成两个 - 一个添加,第二个使用。从第一个呼叫中呼叫第二个呼叫,不是直接呼叫,而是通过调度员呼叫。
It is because the datagrid does not "see" changes immediately. Postpone using your newly added data -- please try splitting your method into two -- one adding, the second using. Call the second from the first one, not directly, but via dispatcher.