問題タブ [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.
c# - ObservableCollection の仕組み.作業を追加しますか?
ObservableCollection
私は、コレクションにいくつかのメカニズムをカプセル化するように機能する特殊なコレクションを実装しようとしていました。そのために、コレクションも継承しCollection
、同じインターフェイスも実装しています。
コレクション変更ロジック全体を実際に実装する方法がわかりません。たとえば、オーバーライドされていない (仮想としてマークされていない) ため、そのメソッドを使用してアイテムが追加された場合、イベントCollection<T>.Add
はどのように発生しますか?ObservableCollection
CollectionChanged
c# - EntityFramework EntityCollection Observing CollectionChanged
私は最初にアプリケーションでEntityFrameworkデータベースを使用しています。どういうわけかEntityCollection
、ViewModelのの変更について通知を受け取りたいのですが。それは直接サポートしていませんINotifyCollectionChanged
(なぜ?)そして私は別の解決策を見つけることに成功していません。
これが私の最新の試みですが、ListChanged
イベントが発生していないように見えるため、機能しません。
誰かが私がどのように変化を観察することができるかについて何か考えを持っていますEntityCollection
か?
ダン
asp.net - WPFのASP.NET DataBind()の代替は何ですか?
私は ASP.NET 開発者ですが、最近は WPF アプリケーションも開発しています。ASP.NET では、GridView のデータを更新する必要があるときはいつでもDataBind()
. しかし、WPF での代替手段は何ですか? 回避策として、現在INotifyCollectionChanged
データを更新するために実装しています。
wpf - INotifyPropertyChanged または INotifyCollectionChanged で DataTable を使用しますか?
こんにちは、DataTables に問題があります。したがって、バインドされている DataTable の DataGrid 内のセルを変更するたびに検出する必要があります。
どうやってするの?またはと?INotifyPropertyChanged
_INotifyCollectionChanged
注:私は試してINotifyPropertyChanged
いますが、DataTableに値を設定したときにのみ検出され、DataGridのセルの値を変更しても検出されません。すでに試しOneWay
ましTwoWay
たが、何も起こりません。
前もって感謝します!
wpf - WPF:ListViewのItemsSource CollectionChanged通知にフックするにはどうすればよいですか?
私ListView
はにデータバインドされているを持っていObservableCollection
ます...
コレクションが変更されたときにトリガーされるイベントが見つからないようです。どういうわけか、collectionchanged通知にフックする必要があると思いますか?どうすればいいのかよくわかりません。
基本的に、コレクションが変更された場合、ListViewがリストを更新する際にすでに行っていること以外の追加の作業を行いたいと思います。
c# - WPF: ユーザー描画コントロールに 2D 配列を表示する正しい方法は何ですか?
Color[,] 配列を表示するためだけにユーザー描画コントロールを作成したいと考えています。コントロール自体は、対応する色の長方形の NxM グリッドを描画する必要があります。
FrameworkElement から継承し、OnRender メソッドをオーバーライドしようとしています:
問題は、基になる配列の要素を変更しても、コントロールが再描画されないことです。ただし、まったく新しい配列を割り当てるか、コントロールのサイズを変更すると、正常に機能します。
明らかに、コレクション内の内部変更について何らかの方法でコントロールに通知する別のクラスが必要です。INotifyCollectionChange と ObservableCollection を見ていましたが、見つけた唯一の記事は、コレクションを既存のコントロールにバインドすることに関するものであり、カスタムのユーザー描画のものではありませんでした。そのため、この時点で混乱して行き詰まりました。
wpf - 監視可能な LinkedList
私の WPF アプリには、アイテムの値が以前に表示されたアイテムに依存する ItemsControl があります。
ViewModel は可変長の部分に分割されたオーディオ ファイルであり、右側に DateTime が表示されるように表示する必要があり、それを計算する必要があります (各部分の長さしかわかりません。計算する必要があります。実際の開始時間と終了時間、および ItemsControl 上の位置)。
私の最初のアプローチは を使用することでしたObservableCollection<MyviewModel>
が、すぐにいくつかの恐怖が発生しました:
IMultiValueConverter
実行時に前の要素しか知らなかったので、返す値を計算し、DataContext のプロパティをその値に設定する5 ウェイ マルチバインディング。
前の要素は、 のバインディングを使用して送信されましたRelativesource.PreviousData
。
今私の問題は、コンバーターから値を設定した後(明らかに悪いことです)、実際にそれを機能させた後、通常のコレクションにはその要素に順序の概念がないため、さらに先の場合残りの途中にオーディオパートを追加したいのですが、表示がめちゃくちゃです。
さらに、さらにビジネスロジックを実装する場合、このコンバーターで計算されたオーディオ パーツの開始と終了にアクセスする必要があるかもしれませんが、まだ表示されていない場合はどうなりますか?
したがって、そのアプローチはいくつかのレベルで間違っていました。
そこでググって調べて知ったLinkedList
。今、私は基本的に Observable LinkedList であるクラスを作成しようとしています (ジェネリックである必要はありません):
そして、問題の核心は、コレクションを変更するメソッド (Addfirst、AddLast など) をオーバーライドできないため、OnNotifyCollectionChanged を適切に呼び出せないことです...
したがって、これらのメソッドごとにオーバーロードを作成できると考えていますが、それはかなり厄介に聞こえます...
要するに、独自のプロパティの 1 つを計算するために、各項目が前の項目の詳細を知っているある種のコレクションが必要です。
手がかりはありますか?これも良い解決策ですか?
ありがとう!
付録、ViewModel は次のようになります。
編集: Thomas と Will の回答を組み合わせようと思います: コンポジションを使用し (つまり、カスタム オブジェクトから継承するのではなく、LinkedList のインスタンスを保持します)、使用することを意図したメソッドを再定義します (AddAfter、AddFirstなど) 実際の LinkedList メソッドを呼び出した後、OnNotifyPropertychanged を呼び出すだけです。ちょっとした作業ですが、私の問題に対するエレガントな解決策はないと思います...
ienumerable - using Reactive Extensions to monitor IEnumerable
I'm connecting to an object that asyncronously loads a collection of objects into an IEnumerable. At the time I connect, the IEnumerable may have items already in it's collection, and may add items during the lifetime of the application that I need to be notified of as they occur. As an example, it could be a bank account containing a list of bank transactions.
The challenge is this. I want to combine the processing of the initial values in the IEnumerable with any new additions. They are currently two processes. I would like to eliminate the use of NotifyCollectionChanged entirely.
I can modify the backend holding the IEnumerable. It does not need to remain as an IEnumerable if a solution to this question exists otherwise.
c# - ObservableCollection で CollectionChanged イベントを発生させ、変更された項目を渡すにはどうすればよいですか?
から継承し、ObservableCollection
およびなどのいくつかの追加メソッドを追加するクラスがAddRange
ありますRemoveRange
私の基本メソッド呼び出しは次のとおりです。
これに関する私の問題は、コレクション内のアイテムにアクセスしe.NewItems
たりe.OldItems
、イベントでアクションを実行したりしたいのですが、アクションがこれらの値を渡さないことですCollectionChanged
NotifyCollectionChangedAction.Reset
NotifyCollectionChangedAction.Add
だから私は代わりにを使うことができると思ったが、それは例外Reset
をスローするRange actions are not supported
私の質問は、どのように CollectionChanged イベントを発生させ、新しいアイテム リストまたは古いアイテム リストに渡すことができるかということです。