Нуждаете се от Listbox за улавяне на първото свойство на избрания елемент като 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 Sallmen. - person ; 01.10.2012
comment
Опа...@Michael Sallmen, промяната на SelectedIndex на -1 не направи нищо различно и аз се опитвам да избегна обработката на събитието OnClick, ако е възможно, поради работата в MVVM. Някакви други предложения? - person ; 01.10.2012
comment
не Трябва да видя повече от вашето изпълнение. Нещото, което трябва да разберете, е как да имате начална стойност или по някакъв начин да не изберете автоматично първия елемент в списъка, така че когато е избран елемент, избраната стойност да се промени. Можете също да играете със свойството SelectedItem. - person Michael Sallmen; 01.10.2012
comment
Отново прехвърли пистолета – в крайна сметка го постави на индекс в колекцията. Очевидно не уведомява за нули. Ще се опитам да го потърся, когато имам нужда от нещо по-луксозно. Благодаря много! - person ; 01.10.2012