問題タブ [inotifypropertychanged]
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# - オブジェクト グラフで変更を確認する
オブジェクトグラフでオブジェクトの変更を監視し、その変更に基づいて何かを行う方法はありますか?
私が次のものを持っているとしましょう:
すべてのオブジェクトにある種の変更通知システムを実装する最良の方法は何でしょうか? たとえば、自動保存では、変更が発生すると、システムがMain
クラスをシリアル化します。
変更をMain
監視し、それらに接続するクラスにグルーコードを含める必要がありますか? これは少し面倒で、エラーが発生しやすいようです。より良い方法はありますか?BarItems
PropertyChanged
c# - C#でPropertyChangedイベントを行うための強く型付けされた方法はありますか?
プロパティの名前を変更し、INotifyPropertyChanged の PropertyChanged イベントのプロパティ名を除いて、Visual Studio の名前変更機能が必要なすべての名前変更を処理することを期待するのは、やや一般的なイベントである必要があります。手動で名前を変更することを覚えておく必要がないように、どうにかして強く型付けするより良い方法はありますか?
wpf - WPF を使用した F# の INotifyPropertyChanged および INotifyCollectionChanged
バックグラウンド スレッドで常に更新される一連のサンプル情報があります。
現在、DispatcherTimer を使用して、この配列をデータグリッドの ItemsSource プロパティに常に割り当てています。それは機能しますが、視覚的な場所をリセットします。たとえば、ユーザーがカーソルをデータグリッドの中央に置くと、実行タイマーがその位置を元に戻します。
このような状況の発生を防ぐために、代わりに INotifyPropertyChanged または INotifyCollectionChanged イベントを使用することは可能ですか? もしそうなら、これはF#でどのように機能しますか?
配列の更新があるたびに、データグリッドに通知する関数を実行する必要があると思います。配列の更新は STAThread セクションにはありません。
WPF データグリッドを含む最新の WPF ツールキットで VS2010 を実行しています。
datagridview - どこで/いつ/どのようにBindingListを実行しますかPropertyChangedをListChangedイベントに変換/配線します
すべてINotifyPropertyChangedを実装するオブジェクトの階層があります。BindingListから派生したカスタムリストもあります。
INotifyPropertyChangedを含意するオブジェクトをリストに追加すると、どういうわけかPropertyChangedイベントが自動的にワイヤーアップ/ListChangedイベントに変換されることを理解しています。
ただし、リストをDataGridViewのデータソースとして設定した後、グリッドの値を変更しても、ListChangedイベントは発生しません...コードにステップインすると、PropertyChanged()イベントは発生しません。 nullであるためにトリガーされます。これは、想定されているように、BindingListのListChangedイベントに接続/変換されていないことを意味すると思います...
例えば:
そして、これが私のカスタムリストクラスです...
何かアイデアや提案はありますか?
ありがとう!
ジョシュ
wpf - WPF ListBox が INotifyCollectionChanged または INotifyPropertyChanged イベントにバインドされない
次のテストコードがあります。
および XAML
ロード時に外側のリストボックスに値が入力されます。エキスパンダーが展開されたらItemsSource
、内側のリストボックスのプロパティを設定します(バインディングを使用する代わりにこれを行う理由は、この操作が非常に遅く、アイテムを表示することを選択した場合にのみ実行したいからです)。内側のリストボックスは正常にレンダリングされますが、実際CollectionChanged
にはコレクションのイベントをサブスクライブしません。ICollection
私はこれを の代わりに との代わりにIEnumerable
と を追加INotifyPropertyChanged
して試しましINotifyCollectionChanged
たINotifyPropertyChanged
。これを実際に機能させる唯一の方法は、SomeCollection
クラスをガットしてから継承することObservableCollection<SomeItem>
です。INotifyCollectionChanged
使用する代わりに自分自身をロールしようとする私の理由ObservableCollection
これは、実際のコードで COM コレクションをラップしているためです。INotify
そのコレクションは追加/変更/削除時に通知し、これらをWPF のイベントに変換しようとしています。
これが十分に明確であることを願っています(遅い)。
c# - INotifyPropertyChangedを理解しようとしています
いくつかの(初心者の)質問:
1)たくさん見かける
これはプロパティの変更を発生させないと思いますか?
それで、私がそうしたいのであれば、私は以下を提供しなければなりませんか?
2)私が以下を持っている場合:
また、XAMLでも
CanDeletePersonプロパティを再評価するにはどうすればよいですか? 基本的には最初は無効になっていますが、グリッドをクリックして行を移動すると、SelectedPersonは更新されますが、CanDeletePersonは更新された値を取得しません。実際に値を再度確認するにはどうすればよいですか?
3)なるほど
...何かがイベントに登録したかどうかによって異なります
どのようにイベントを購読しますか?
c# - 読み取り専用プロパティへのデータバインディング
セットを実装していないプロパティにフィールド(テキストボックス)をバインドすることは可能ですか?
たとえば、3つのフィールドを持つINotifyPropertyChangedを実装するオブジェクトがあります。
UIが作成されておらず、機能する前にこのクラスで実行する必要のある他の多くの作業があるため、これをまだ完全にテストすることはできませんが、これは私が持っている方法で可能ですか、それとも別の方法がありますか?
winforms - INotifyPropertyChanged を実装する .net データ クラスはありますか?
短い質問: MS の組み込みデータ オブジェクトのいずれかが INotifyPropertyChanged をサポートしていますか?
長い説明: データ バインドされたコントロールを使用して大量のデータを表示します。データは、ユーザーの操作によって頻繁に変化します。アプリケーションは、基本的な Windows フォーム アプリです。
すべてのデータのイベントを表示コントロールに接続するのではなく、INotifyPropertyChanged を実装するデータ オブジェクトを使用できることを望んでいます。そうすれば、コントロールは、データが必要なだけ変更された方法、時期、理由を知る必要がありません。自分自身を更新します。
健全性チェック: ここで正しいツリーを吠えていますか?