Сетка данных 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 начинает редактирование моего предыдущего выбранного элемента, а не добавленного элемента. Кто-нибудь знает, как это исправить?


person user342961    schedule 14.09.2010    source источник
comment
Возможно, проверьте свой SelectedIndex? У меня иногда было что-то другое, чем мой SelectedItem, и, возможно, команда редактирования использует SelectedIndex вместо SelectedItem. dgKenmerken.SelectedIndex = dgKenmerken.Items.Count-1   -  person Rachel    schedule 14.09.2010
comment
Рэйчел, использование SelectedIndex не сработало. Я использовал этот код: dgKenmerken.SelectedIndex = dgKenmerken.Items.IndexOf(newKenmerk);| и это изменило SelectedIndex и SelectedItem на новый элемент, но все еще не инициировало редактирование этого элемента   -  person user342961    schedule 15.09.2010


Ответы (1)


Это связано с тем, что сетка данных не «видит» изменения сразу. Отложите использование вновь добавленных данных — попробуйте разделить метод на два — один добавляется, второй — используется. Позвоните второму из первого, но не напрямую, а через диспетчера.

person greenoldman    schedule 14.01.2011