Требуется Listbox для захвата первого свойства selecteditem как SelectedItem, а не PropertyChanged *TO*

У меня есть список, который при выборе элемента вызывает метод, выполняющий хранимую процедуру.

Проблема в том, что когда выбран первый элемент, мое событие PropertyChanged не срабатывает, пока выбор не будет изменен с одного элемента на другой. Таким образом, запускается уведомление второго элемента SelectedItem PropertyChanged, но похоже, что выбор первого элемента просто рассматривается как вход в список, вместо входа в список и выбора элемента, на котором происходит щелчок.

Кроме того, я не могу просто дважды щелкнуть один и тот же элемент, чтобы получить уведомление, мне нужно фактически выбрать другое свойство, чтобы событие произошло.

Каков наилучший способ получить элемент, на который я сначала нажимаю при входе в список, чтобы он был SelectedItem, с запуском события PropertySelected/Property Changed для этого элемента? Я надеюсь, что это ясно.

Ниже мой код, заранее спасибо!

В моей модели просмотра:

 public ObjectClass SelectedObject
 {
      get { return _SelectedObject; }
      set
      {
          _SelectedObject = value;
          base.OnPropertyChanged("SelectedObject");
      }
 }

 void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
      switch (e.PropertyName)
      {
          case "SelectedObject" : UpdateSelectedStuffList.StoredProcedureMethod(this);
      }
 }

По-моему:

  <ListBox ItemsSource="{Binding Path=ObjectCollection, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
            DisplayMemberPath="objectName"
            SelectedItem="{Binding Path=SelectedObject, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

Я думал, что вместо использования PropertyChangedEventArgs будет что-то вроде «PropertySelectedEventArgs». ИЛИ, может быть, мне нужно реализовать INotifyPropertyChanging?


person Community    schedule 01.10.2012    source источник


Ответы (1)


Если вы хотите, чтобы это срабатывало, даже если вы выбираете один и тот же элемент дважды подряд, я бы посмотрел на OnClick. В противном случае рассмотрите возможность установки для выбранного индекса значения -1, чтобы при выборе пользователем первого элемента у него было измененное значение.

person Michael Sallmen    schedule 01.10.2012
comment
Большое спасибо, @Michael Salmen. - person ; 01.10.2012
comment
Упс... @Michael Salllmen, изменение SelectedIndex на -1 ничего не изменило, и я пытаюсь по возможности избежать обработки события OnClick из-за работы в MVVM. Любые другие предложения? - person ; 01.10.2012
comment
Неа. Мне нужно увидеть больше вашей реализации. Вам нужно выяснить, как иметь начальное значение или каким-то образом не выбирать первый элемент в списке автоматически, чтобы при выборе элемента выбранное значение менялось. Вы также можете поиграть со свойством SelectedItem. - person Michael Sallmen; 01.10.2012
comment
Снова поторопился - в итоге установил индекс в коллекции. По-видимому, он не уведомляет о нулях. Я постараюсь найти это, когда мне понадобится что-то более интересное. Большое спасибо! - person ; 01.10.2012