2010-09-14 64 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不會立即「看到」更改。推遲使用新添加的數據 - 請嘗試將您的方法分爲兩個 - 一個添加,第二個使用。從第一個調用第二個,不是直接調用,而是通過調度器。