問題タブ [inotifycollectionchanged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1410 参照

wpf - 削除アクションのキャンセル - NotifyCollectionChangedAction

ビューモデルで次のコードを使用して、コレクションからアイテムを削除しています。

コレクションにバインドされたデータグリッドがあります。確認プロンプトに基づいて削除アクションをキャンセルする方法があるかどうか疑問に思っていますか? NotifyCollectionChangedEventArgs にキャンセル メソッドがないことに気付きました。ユーザーがデータグリッドからアイテムを削除しても、確認で「いいえ」を選択すると、アイテムはデータグリッドから削除されたままになります。データベースからは削除されず、データグリッドが更新されると再び表示されます。私は mvvm パターンを使用していますが、データグリッドをコーディングせずにこれを行うことを好みます。どんな助けでも大歓迎です。

0 投票する
1 に答える
506 参照

c# - WPF UserControls でイベント フックをデタッチする方法

UserControlを含むWPFがありますComboBoxComboBox.Itemsコレクションにイベント リスナーをアタッチする必要があります。

しかし、私はそれを切り離す方法を理解できないようです。それとも、コントロール全体がガベージ コレクションされるときに自動的に処理されますか?

0 投票する
2 に答える
282 参照

c# - NotifyCollectionChangedAction:削除時のオブジェクトインスタンス?

私は現在、一般的に非常に重要で短命なアイテムを含むコレクションにINotifyCollectionChangedインターフェイスを実装しています。これらのアイテムはすべてIDisposeを実装しており、コレクションから削除する直前に呼び出すことができます。私は破壊命令について何のコントロールも持っていません、私はそれが来たときにそれを取る必要があります。

私の問題は、「削除」アクションをどのように伝播するかです。NotifyCollectionChangedActionコンストラクターは、指定されたアクションのみを含むバリアントを提供しますが、削除されたアイテムのインデックスがあります。悲しいことに、インデックスだけを取る過負荷はありません。

だから私はできると思います:

  • 「削除」アクションのみを渡す
  • 「null」オブジェクトとインデックスとともに削除アクションを渡します
  • 破棄されたオブジェクトとインデックスとともに削除アクションを渡します

どれが好きですか?私はそのような「コア」インターフェースを間違って実装することを少し恐れており、明らかに関連のないバグを引き起こす可能性があります...

「変更」リストにあるアイテムで何が起こるかについてのガイドラインが見つかりませんでした。利用できるものはありますか?

補足:重要な場合、コレクションはすぐにWPFにバインドされません。

0 投票する
3 に答える
6591 参照

.net - ConcurrentDictionary、INotifyCollectionChanged、INotifyPropertyChanged を使用してカスタム監視可能なコレクションを作成する方法

ObservableConcurrentDictionary を作成しようとしています。このオブジェクトはマルチスレッド アプリケーションで使用され、そのデータは、コントロールの ItemsSource プロパティを介してコントロールに入力するために使用されます。

これは私が思いついた実装です:

残念ながら、このソリューションは意図したとおりには機能しません。実際、まったく機能しません。私が間違っていること、またはより良い解決策が存在することについてのアイデアはありますか?

私は ObservableCollection を使用できないことに注意してください。そのため、独自の Observable コレクションを作成する必要があります。

編集:作業バージョンは以下です。これが同様の問題を抱えている他の人に役立つことを願っています。

0 投票する
1 に答える
6713 参照

c# - INotifyPropertyChanged PropertyChanged イベントの送信者オブジェクトからプロパティ名を取得する方法

オブジェクトを受け取り、プロパティを取得するメソッドを持つベース DependencyObject クラスがあり、INotifyPropertyChanged を実装するタイプのプロパティごとに、新しい PropertyChangedEventHandler を追加します。ハンドラー メソッドでは、オブジェクト "sender" のパラメーターと PropertyChangedEventArgs "e" を取得します。私の質問は、送信者が INotifyPropertyChanged を実装するタイプのプロパティである場合、プロパティ名を動的に取得する方法を知っている人はいますか?

これが私が取り組んでいるものです:

SetValues メソッドの最初のパラメーターは、ビュー モデルで使用される DependencyObject 型です。2 番目のパラメータは、DomainService の Context.LoadOperation から返されるエンティティです。

私の問題は、コレクションのプロパティ名で PropertyChanged イベントを発生させる必要がある INotifyCollectionChanged.CollectionChanged が発生したときです。ですから、誰かが何かアドバイスがあれば、私はそれを大いに感謝します. 前もって感謝します。

編集
イベントを発生させているプロパティ名を取得する方法を考え出しました。これは私の PropertyChangedEventHandler の編集版です。

基本的に、これは私が探していたものを実行しますが、明らかに私はまだ正しいことをしていません。別のタイプのプロパティである ObservableCollection が追加されているときに、UIElement がまだ更新されていません。

これが私の DependencyObjects と ViewModel の例です:

0 投票する
3 に答える
18791 参照

wpf - notifycollectionchangedaction リセット値とは

私は監視可能なコレクションを持っています... SelectableDataContext<T>..ジェネリッククラスSelectableDataContext<T>には... 2つのプライベートメンバー変数があります

  1. プライベートTアイテム。
  2. プライベートブールが選択されています。

IsSelected プロパティが変更されたとき...コレクションの変更されたプロパティが起動しません。

Reset発火するはずだと思います...にあるのでINotifyCollectionChangedAction

0 投票する
2 に答える
3926 参照

c# - Observable Collection でのコレクション変更イベントの例

写真オブジェクトの観察可能なコレクションを表示する WPF アプリケーションにリストボックスがあります。写真がコレクションに追加されると、UI はすぐに新しい画像を表示する必要があります。これは CollectionChanged イベントを使用して処理できることを理解しています。ハンドル コレクション変更イベントの使用方法の例を探しましたが、機能するものは見つかりませんでした。誰か良い例を知っていますか?

もう1つのことは、画像が私のコンピューターのディレクトリから来ており、ファイルシステムウォッチャーがディレクトリを監視して新しい写真が追加または削除されていることです。現在、写真が追加または削除されたときにファイル システム イベント ハンドラーを使用してコレクションを更新していますが、新しい写真をディレクトリに追加すると問題が発生し、それ以外のスレッドからコレクションを変更できないという例外がスローされます。メインスレッド。誰もこの問題を解決する方法を知っていますか? この問題のコードは次のとおりです。

0 投票する
1 に答える
11469 参照

wpf - INotifyCollectionChangedインターフェイスの実装

特別な機能を備えたコレクションを実装する必要があります。さらに、このコレクションをListViewにバインドしたいので、次のコードになりました(フォーラムで短くするためにいくつかのメソッドを省略しました)。

単純なデータクラスでテストしたかったのです。

そこで、myCollectionクラスのインスタンスを次のように作成しました。

問題は、INotifyCollectionChangedインターフェイスを実装したにもかかわらず、コレクションが更新されたときにListViewが更新されないことです。

次のようにmyCollecionクラスの代わりにObservableCollecionクラスを使用すると、バインディングが(XAMLで)正常であることがわかります。

ListViewの更新

何が問題ですか?

0 投票する
3 に答える
3238 参照

wpf - コレクション変更イベントでコレクション変更をロールバックできますか?

私は2つのリストビューを持っています...そしてそれらの間にボタンを追加/削除します。

viewmodelのlist-view-collectionのコレクション変更イベントで、特定の条件の変更をロールバックできますか?

0 投票する
1 に答える
440 参照

wpf - XMLファイルへのデータの挿入は、ObservableCollectionに通知します

XMLファイルからデータを取得するObservableCollectionにバインドされたListViewを持つ親ウィンドウがあります。親ウィンドウには、モーダルウィンドウを開く追加ボタンがあります(form2.ShowDialog()、これはモーダルウィンドウだと思います)。

子ウィンドウにはいくつかのテキスト フィールドと追加ボタンがあり、ユーザーが新しいレコードのデータを入力して [追加] ボタンをクリックすると、XML ファイルが新しいレコードで更新されます。

私がやろうとしているのは、子ウィンドウが閉じられたときに、親ウィンドウの ListView が更新されて新しいレコードが表示されることです。

子ウィンドウから XML ファイルを更新するとき、これを XML ファイルに直接行っています。ObservableCollection でイベントを発生させる他の方法でデータをファイルに追加する必要がありますか?

親ウィンドウの追加ボタンにイベント ハンドラーを追加し、XML ファイルの再読み込みを強制しようとするパスをたどっていましたが、これを達成する方法がわかりません。これまでに行ったことを以下に示します。 .

form1.xaml.vb:

refresh_EmContacts サブサブに何を入れる必要があるかを調べることができません。更新されたことを通知し、再読み取りを行うために、ある種の ObservableCollection イベント ハンドラーを呼び出す必要がありますか?

どんな援助でも大歓迎です。

マット