問題タブ [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# - UI要素を更新しないコードで定義されたWPFデータバインディングの問題
新しいUI要素とデータバインディングをコードで定義する必要があります。これらは実行時に実装されるためです。これが私がやろうとしていることの簡略版です。
データ・モデル:
コードでのバインド:
データが最初にバインドされると、テキストブロックが正しい家番号で更新されます。その後、コードで家番号を変更すると、本のPropertyChangedイベントが発生しますが、テキストブロックは更新されません。誰か教えてもらえますか?
ありがとう、ベン
c# - バックグラウンドスレッドからデータバインドされたデータグリッドビューを正しく更新するにはどうすればよいですか
INotifyPropertyChanged を実装するカスタム オブジェクトがあります。コレクションがBindingListに基づいているこれらのオブジェクトのコレクションがあります。コレクションのバインディングソースを作成し、バインディングソースとデータグリッドビューのデータソースを設定しました。
バックグラウンド スレッドからカスタム オブジェクトのプロパティを更新する必要があることを除いて、すべてがうまく機能します。そうすると、次のエラーが表示されます。
BindingSource を独自のデータ ソースにすることはできません。DataSource および DataMember プロパティを、BindingSource を参照する値に設定しないでください。
私は正確な問題(および解決策?)があるように見える次の投稿を見つけましたが、それを完全に理解することはできません.
ビジネス オブジェクトのポストごとに oper 変数を作成して初期化し、2 つのイベント関数をコレクション クラスに入れました。これは正しくコンパイルされますが、実行すると例外なくハングします。
Invoke/Begin Invoke を使用するように言っている投稿をたくさん見てきましたが、UI で関数を呼び出しておらず、ビジネス オブジェクトを更新しているだけなので、invoke 呼び出しをどこに置くかわかりません。
1 つの制限: ビジネス オブジェクトが誰がそれを表示しているか (複数のコンシューマーが存在するため) を認識しないようにしたいので、GUI 参照をビジネス オブジェクトに送信して、後でそれらの参照を使用して呼び出しを呼び出せるようにすることはオプションではありません。
c# - C#でPropertyChangedEventHandlerをリッスンしている人を見つける
私は WPF フォームを持っており、データバインディングを使用しています。INotifyPropertyChanged から発生したイベントを取得しますが、リッスンしている項目のリストを取得する方法を確認したいので、接続されたハンドラーを起動します。
これどうやってするの?
silverlight - PropertyChanged イベントをバブルアップさせるにはどうすればよいですか?
オブジェクト (オブジェクト A、B) の階層があり、それぞれが次のINotifyPropertyChanged
ように実装されています...
A には B 型のメンバーがあり、B には C のメンバーがあり、C は bool 型です
C が変更されると、そのPropertyChanged
イベントが発生しますが、これは B のプロパティ変更イベントを発生させません。したがって、A は B の変化に反応しません。
これを泡立てる良い方法はありますか?
wpf - INotifyPropertyChanged の問題
最初に、以下のサンプルは単純化しすぎていると言いたいです。WPF コントロールをバインドしたとします。
INotifyPropertyChanged
ウィンドウは、フォームに Name セッターを実装して持つ Person クラスにバインドされます。
つまり、ユーザーが UI から変更しようとするたびに、_name に「ある名前」が割り当てられます。しかし、このサンプルは機能しません。TextBox の名前をいくつかの値に変更し、タブを押してフォーカスをボタンに移動させ、TextBox の値は変更されませんが、PropertyChanged イベントがトリガーされました。
なぜそれが起こるのか説明していただけますか?私が理解しているように、PropertyChanged
イベントによりUIはプロパティから値を再読み取りして表示するように強制されますが、私の例では、データバインドされたテキストボックスの値は更新されません。
また。これがプロパティの不適切な実装であることは理解していますが、これは単純化しすぎていることを繰り返したいと思います。これは単なるサンプルです。とにかく、 PropertyChanged は、プロパティが変更されたため更新する必要があることを通知しますが、更新しません。
wpf - INotifyPropertyChanged を実装する WPF
プロパティをセットアップし、INotifyPropertyChanged を実装しました
そのようです...
他のクラスでこの正確なセットアップを使用しましたが、何らかの理由で Notify メソッドで PropertyChanged 変数が null に戻ってきます。
これが機能する他のクラスでは、PropertyChanged イベントは null ではなく、デリゲートに評価されますか? ここで何が欠けていますか?
クラス内から public アクセサーを呼び出していますが、違いはありますか?
winforms - データバインディングでのプロパティの変更を防ぎ、バインドされたコントロールに現在の値を表示するよう強制します
私は持っている
このクラスは INotifyPropertyChanged を実装しており、WinForm コントロールの TextBox コントロールにバインドしています。
問題は、ユーザーがテキストボックスに値を入力すると、IsNew が false であるため、バインドされた値が同じままであっても、新しい値がテキストボックスに表示されることです。(両方のタイプの DataSourceUpdateMode を使用してみました。)
INotifyPropertyChanged の問題を読みましたが、イベントのイニシエーターもイベントの処理を検出しないという点で、Windows フォームは基本的に同じように機能すると思います。
コントロールが INotifyPropertyChanged イベントに応答するように強制するために、BO クラスでできることはありますか? または、コントロールに正しい値を表示させるために、BO クラス内で他にできることはありますか?
GUIコードでこれをさまざまな方法で処理できることはわかっていますが、それは私の目標ではありません。
c# - 自動的にINotifyPropertyChanged
すべてのセッターにOnPropertyChangedを記述しなくても、クラスのプロパティ変更の通知を自動的に受け取る方法はありますか?(私はそれらが変更されたかどうか知りたい何百ものプロパティを持っています)。
アントンは動的プロキシを提案しています。私は実際に「Castle」ライブラリを過去に似たようなものに使用しました。これにより、作成する必要のあるコードの量は減りますが、プログラムの起動時間(ymmv)が約30秒長くなります。ランタイムソリューション。
コンパイル時の属性を使用して、コンパイル時のソリューションがあるかどうか疑問に思っています...
SlasheneとTcKは、反復コードを生成する提案を提供します-残念ながら、すべてのプロパティがm_Value = valueの単純なケースであるとは限りません-それらの多くはセッターにカスタムコードを持っているため、スニペットとxmlからのcookie-cutterコードは実際には実行可能ではありません私のプロジェクトでも。