2010-09-14 81 views
1

我有一个可编辑项目的数据网格,我有一个按钮来创建这样一个项目的新实例。数据网格用新项目更新,但我无法选择最近添加的项目并开始编辑。WPF datagrid开始编辑新项目

下面是我的代码:

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

也许检查您的SelectedIndex?我偶尔有不同的那么我的SelectedItem,也许编辑命令使用SelectedIndex而不是SelectedItem。 'dgKenmerken.SelectedIndex = dgKenmerken.Items.Count-1' – Rachel 2010-09-14 15:22:05

+0

Rachel,using SelectedIndex does not work。我用这个代码: \t dgKenmerken.SelectedIndex = dgKenmerken.Items.IndexOf(newKenmerk); | 并将SelectedIndex和SelectedItem更改为新项目,但仍未启动对该项目的编辑 – user342961 2010-09-15 07:09:33

回答

1

这是因为datagrid不会立即“看到”更改。推迟使用新添加的数据 - 请尝试将您的方法分为两个 - 一个添加,第二个使用。从第一个调用第二个,不是直接调用,而是通过调度器。