1

アイテムが選択されると、ストアドプロシージャを実行するメソッドを呼び出すリストボックスがあります。

問題は、最初のアイテムが選択されたときに、選択が1つのアイテムから別のアイテムに変更されない限り、PropertyChangedイベントが発生しないことです。したがって、2番目のアイテムSelectedItem PropertyChanged通知が発生しますが、最初のアイテムを選択すると、リストボックスに入ってクリックが発生したアイテムを選択するのではなく、リストボックスに入ったように見えます。

また、同じアイテムを2回クリックして通知を発生させることはできません。イベントを発生させるには、実際には別のプロパティを選択する必要があります。

リストボックスに入って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を実装する必要があるかもしれませんか?

4

1 に答える 1

1

同じアイテムを 2 回続けて選択した場合でもこれを起動したい場合は、OnClick を調べます。それ以外の場合は、選択されたインデックスを -1 に設定して、ユーザーが最初の項目を選択したときに値が変更されるようにすることを検討してください。

于 2012-10-01T19:14:56.907 に答える