Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Свойство CurrentItem объекта представления не меняет своего значения. Почему ?  [new]
thunder2
Member

Откуда:
Сообщений: 380
Есть окно в котором создается объект представления типа LisCollectionSource таким образом:
// класс данных
public class mtype
{
    public ObservableCollection<Trigger> Triggers {get; set;}
}

// метод окна
public bool? ShowDialog(mytype obj)
{
   DataContext = obj;
   grdTriggers.ItemsSource = obj.Triggers; // grdTriggers - DataGrid отображающий ObservableCollection<Trigger>
   lstView = (ListCollectionView)CollectionViewSource.GetDefaultView(grdTriggers.ItemsSource); // lstView - приватное поле класса окна
   return this.ShowDialog();
}
Затем при нажатии на некую кнопочку вызывается другое окно, в которое передается экземпляр типа Trigger из коллекции Triggers. Вообщем-то ничего нового, обычное поведение.
private void btnEdit_Click(object sender, RoutedEventArgs e)
{
   TriggerEdit trgEdit = new TriggerEdit(); // это окно в котором будем менять наш экземпляр
   trgEdit.Owner = this;
   Trigger trg = new Trigger(); // созадем пустой объект
   trg = lstView.CurrentItem; // копируем в пустой объект текущий выделенный экземпляр
   if (trgEdit.ShowDialog(trg) == true)
   {
       // если нажали Ок, то заменяем его на новый
       ((Task)this.DataContext).Triggers[this.lstView.CurrentPosition] = trg;
       lstView.Refresh();
   }
}
По идее должно работать, но получается , что lstView.CurrentItem и lstView.CurrentPosition всегда показывают на первый элемент в списке.
Пока вместо
         trg = lstView.CurrentItem;
использую
         trg = ((Task)DataContext).Triggers[this.grdTriggers.SelectedIndex]; 
, но хочется изящества.
16 окт 11, 23:04    [11448842]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить