問題タブ [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.
.net-3.5 - ObservableQueue?
INotifyCollectionChanged を実装する .Net のジェネリック Queue のバージョンを作成した人はいますか、それとも .Net フレームワークのどこかにすでに隠されているものはありますか?
c# - ObservableCollection は AddRange メソッドをサポートしていないため、アイテムが追加されるたびに通知を受け取りますが、INotifyCollectionChanging はどうですか?
範囲を追加して、一括全体を更新できるようにしたいと考えています。
また、アクションが完了する前にアクションをキャンセルできるようにしたいと考えています (つまり、「変更」以外のコレクションの変更)。
wpf - ItemsSource + Converter + Treeview が更新されない
これはかなり複雑です。うまくいけば、誰かが私を助けてくれるように、これを十分に明確にすることができます。Manager と呼べるオブジェクトがあります。Manager には、彼が管理する人々のコレクションがあり、人々はすべて IPerson を実装していますが、さまざまな種類の人々がさまざまなプロパティを持っています。このマネージャーをツリーで表示し、マネージャー ノードの下に、彼が管理しているすべてのプロジェクトを表示したいと考えています。これは、彼が管理する人々から判断できます。
したがって、コンバーターを使用して人をプロジェクトのリストに変換する計画です。XAML は次のとおりです。
私の Person クラスは INotifyPropertyChanged を実装し、人々を保持するリストは INotifyCollectionChanged を実装します。このコードは、ツリービューの ItemsSource を設定するとうまく機能し、マネージャーはプロジェクトのリストと共に表示されます。
ただし、人のリストに新しい人を追加しても、TreeView は更新されません。デバッグすると、追加アクションと追加された項目で CollectionChanged が起動していることがわかります。また、CollectionChanged イベントは null ではないため、UI が監視していることがわかります。ただし、アイテムが追加されたときにコンバーターは実行されません。
IPerson オブジェクトを保持する List の Add メソッドを次に示します。
どういうわけかデータバインディングを壊していますか?
他にどのようなことを確認できますか?
コンバーターは、人物リストの各アイテムを見て、彼らが取り組んでいるプロジェクトを把握し、プロジェクト名を出力リストに追加します。
wpf - WPF ListBox が INotifyCollectionChanged または INotifyPropertyChanged イベントにバインドされない
次のテストコードがあります。
および XAML
ロード時に外側のリストボックスに値が入力されます。エキスパンダーが展開されたらItemsSource
、内側のリストボックスのプロパティを設定します(バインディングを使用する代わりにこれを行う理由は、この操作が非常に遅く、アイテムを表示することを選択した場合にのみ実行したいからです)。内側のリストボックスは正常にレンダリングされますが、実際CollectionChanged
にはコレクションのイベントをサブスクライブしません。ICollection
私はこれを の代わりに との代わりにIEnumerable
と を追加INotifyPropertyChanged
して試しましINotifyCollectionChanged
たINotifyPropertyChanged
。これを実際に機能させる唯一の方法は、SomeCollection
クラスをガットしてから継承することObservableCollection<SomeItem>
です。INotifyCollectionChanged
使用する代わりに自分自身をロールしようとする私の理由ObservableCollection
これは、実際のコードで COM コレクションをラップしているためです。INotify
そのコレクションは追加/変更/削除時に通知し、これらをWPF のイベントに変換しようとしています。
これが十分に明確であることを願っています(遅い)。
wpf - CollectionChanged で IValueConverter を更新するにはどうすればよいですか?
これは私の問題を説明するための基本的な例です。私が持っているとしましょう
Numbers の合計を返す IValueConverter です。
通常、私が行うことは、IValueConverter を IMultiValueConverter に変更し、次のように Numbers.Count に 2 番目の値をバインドすることです
ただし、この方法を使用して実際の問題を解決することはできません。私が考えていないコレクションが変更されたときにバインディングを更新するより良い方法があるはずです。項目が Numbers に追加および削除されたときに値コンバーターを実行するための最良の方法は何ですか?
wpf - ObservableCollection CollectionChanged イベントの処理
Silverlight ツールキットで次のようなコードを見たことがありますが、安全な方法を理解できません。
たとえばインデックス 5 からアイテムを削除すると、_items
インデックス 5 以降のコレクション内のすべてのアイテムの現在のインデックスが以前よりも 1 つ少なくなることはありませんか? では、このコードのように「古い」インデックスを使用してアイテムを継続的に削除することは、どのように安全なのでしょうか?
なぜこれが機能するのかを本当に理解したいです。
何か案は?
.net - ObservableKeyedCollection がないのはなぜですか.NET フレームワークで?
.NET Framework にはバージョン 3.0 以降ObservableCollection<T>が含まれていますが、ObservableKeyedCollection<TKey, TValue> がないのはなぜですか。
さて、KeyedCollection<TKey,TValue>から派生させてINotifyCollectionChangedインターフェイスを実装することで、独自のコレクションを実装することはできますが、.NET Framework への適切な追加にはなりません。
.net - アイテムが変更されたことを示すために使用される NotifyCollectionChangedAction はどれですか?
イベントを実装INotifyCollectionChanged
して発生させるときCollectionChanged
は、引数を指定する必要がありNotifyCollectionChangedAction
ます。NotifyCollectionChangedAction
アイテムの値が変更された場合など、コレクション内のアイテムが変更されたことを示すために使用されるのはどれですか?
c# - カスタム ObservableCollection
私が作成した ObserverableCollection に似たクラスについて質問があります。私のクラスは基本的に同じ機能を持っていますが、アイテムがリストに追加されたときにいくつかの自動ソート機能を追加します。私の質問は、私のクラスがインターフェイス INotifyCollectionChanged を実装して、コレクションが変更されたときにコレクションを表示する ListView に通知されるようにすることです (少なくともこれは私が思っていたことです)。コレクションに追加または削除するたびに、コレクションが変更されたことを通知しますが、ListView には変更が表示されません。では、INotifyCollectionChanged の機能を解釈できなかったのでしょうか。代わりに INotifyPropertyChanged を使用する必要がありますか? 質問に関するヘルプは素晴らしいでしょう!
私のクラスの重要な部分は次のとおりです。
コレクションが変更されるたびに (アイテムの追加/削除)、OnCollectionChanged() を呼び出します。私のコレクションは LinkedList であり、NotifyCollectionChangedEventArgs コンストラクターには、通常 LinkedList にはない NotifyCollectionChangedAction.Add/Remove フラグのインデックスが必要なので、すべての変更に NotifyCollectionChangedAction.Reset を使用します。
コレクションを使用する私の ListView は、コレクションにアクセスするために ItemSource プロパティで Databinding を使用します。
さらにコードが必要な場合はお知らせください。
c# - 監視可能なスタックとキュー
とのINotifyCollectionChanged
実装を探しています。私は自分で転がることはできましたが、車輪の再発明をしたくありません。Stack
Queue