問題タブ [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.
vb.net - XML ファイルの変更を通知する
私はこのシンプルなテキストパッド プログラムを WPF/VB.NET 2008 で作成しました。このプログラムは、キーストロークごとにフォームのコンテンツを XML ファイルに自動的に保存します。
現在、XML ファイルの変更をプログラムにリアルタイムで表示させようとしています。たとえば、2 つのテキストパッドを開いて最初のテキストパッドに書き込むと、自動的にもう一方のテキストパッドに反映されます。
これどうやってするの?
私の同僚の 1 人が、iNotifyPropertyChanged について読むように言いました (実際に読みました) が、それを自分のアプリケーションに適用するにはどうすればよいでしょうか..?
:(助けて〜
ところで、私は Google Wave のデモからアイデアを得て、実際にはもっと大きなことをしようとしています..
c# - 基本クラスでのINotifyPropertyChangedまたは同様のカスタムイベントの実装
これを行う方法はありますか?
あるクラスのプロパティ変更への登録をサポートする最も簡単な方法を開発する必要があります。INotifyProperyChangedサポートを手動で追加する方法とは別に、次のようにする方法はありますか。
これにより、Child.PropertyChanged + = some_handlerを実行して、子プロパティの変更についてのみ通知を受けることができます。これはNHibernateやその他のものではなく、プロジェクト全体で手動で使用するためのものです。Castle Dynamic Proxy(ここのように)でこれを行ういくつかの例を調べましたが、それを悪用する方法がわかりません:(
確かに、フレームワークとAOP全般について調べたいと思いますが、今は十分な時間がありません...
コメントありがとうございます...
c# - PropertyChangedイベントは常にnull
私は次の(省略された)xamlを持っています:
私はシングルトンクラスを持っています:
そして私のメインウィンドウコンストラクターでは:
テストメッセージを表示するためのテキストブロックを取得できません。デバッグを通じてコードを監視すると、PropertyChangedは常にnullになります。何か案は?
inotifypropertychanged - PropertyChangedイベント、OnClick時に発生しますか?
INotifyPropertyChangedを実装し、イベントをビジネスオブジェクトレイヤーに戻すフォーム上のいくつかのコントロールとBindingSourceを介してPropertyChangedイベントをフックするいくつかのビジネスオブジェクトを備えたWinFormsアプリケーションがあります...
1つだけ問題があります。コントロールがフォーカスを失った場合を除いて、すべてが正常に機能します。たとえば、ユーザーはテキストフィールドを変更しますが、「保存」ボタンを押す前に、実際にはどこかで他のコントロールをクリックする必要があります(たとえば、別のコントロールにフォーカスを合わせる必要があります)。
これをOnClickなどに接続して、ユーザーがテキストを入力すると(または、ドロップダウン値を変更した後でも)変更がビジネスオブジェクトレイヤーに伝達されるようにする方法はありますか?ユーザーに強制する必要はありません。保存する前に別のテキストボックスをクリックしますか?
グーグルは私をどこにも導きませんでしたが、WPF =(でこれを簡単に行う方法の例になりました。しかし、WinFormsの例はありません...
お知らせ下さい、
ドリュー
c# - INotifyPropertyChanged で DataTable プロパティを実装する方法
WPF MVVM アプリケーションを作成し、WPFToolkit DataGrid バインディングを DataTable に設定したので、DataTable プロパティを実装して変更を通知する方法を知りたいです。現在、私のコードは以下のようなものです。
この問題の別の解決策はありますか?
c# - WPF INotifyPropertyChangedが配列プロパティで更新されていませんか?
私が抱えている問題を示すために、小さな例を作成しました。
最初に私のクラス:
問題は配列であるため、Values プロパティです。配列内の要素が更新されたときに INotifyPropertyChanged を正しく呼び出す方法がわかりません。
ここに私のxamlがあります:
そして背後にあるコード:
ボタンをクリックすると、最初の行の値が変更されますが、その変更は UI に反映されません。Title プロパティを変更すると、タイトルが正しく更新されます。
INotifyPropertyChanged を呼び出して、配列要素が更新されたことを理解する方法はありますか?
c# - CodeContracts を使用した INotifyPropertyChanged の正しい実装の強制 - 「証明されていないことが必要」
INotifyPropertyChanged の正しい実装を強制する簡単な方法を探しています。つまり、PropertyChanged が発生したときに、実際に定義されているプロパティを参照する必要があります。Microsoft の新しい CodeContract ツールでこれを実行しようとしましたが、「CodeContracts: requires unproven」という警告が引き続き表示されます。これが私のコードです...
とにかくこれを機能させる方法はありますか?
c# - コード ビハインドで OnPropertyChanged が機能しないのはなぜですか?
ViewModel モデルをコード ビハインドに配置し、DataContext を「this」としてバインドすることで、一部のコードを簡素化しようとしていますが、次の例では動作が異なるようです。
OnPropertyChanged("Message") が呼び出されても、ボタンをクリックしたときに "Message" にバインドされた TextBlock が変更されないのはなぜですか?
XAML:
コードビハインド:
.net - .net winforms での DataBound UserControl および PropertyNameChanged イベントの問題
TextBox とデータバインドされたプロパティ - Value を持つ UserControl があります。Value は、Color、Array、Font などの任意のオブジェクトにすることができます。テキストが変更されるたびに、プロパティ Value は有効である限り変更されます。
msdn の記事: How to: Apply the PropertyNameChanged Patternを見ると 、コントロール側からPropertyNameChanged Event パターン を使用する必要があると書かれています。
ここで、DataSourceUpdateMode = OnValidate の場合、このパターンを適用する必要さえありません。もし、言う。Value プロパティがビジネス オブジェクトの色フィールドにバインドされている場合、テキスト ボックスに red と入力し、タブで別のフィールドに移動すると、同じ色フィールドにバインドされているフォーム上の他のフィールドがすぐに更新されます。
ただし、私の DataSourceUpdateMode = OnPropertyChange の場合、フォーム上の他のすべてのフィールドは、'd' (re'd' のように) を押すとすぐに更新されると予想されます。
これは起こりません。そのため、前述の PropertyNameChanged パターンを適用しましたが、まだ発生しません。
ただし、PropertyNameChanged イベントを削除し、代わりに INotifyPropertyChanged を使用すると、完全に機能します。
私の問題は、記事によると、 INotifyPropertyChanged は、ユーザーコントロールではなく、ビジネスオブジェクトによって使用されることになっているということです。
動作しますが、将来の問題に遭遇したくありません。
誰が何が起こっているのか知っていますか?
到着予定時刻:
INotifyPropertyChanged を使用しても問題ないと仮定すると、さらに問題が発生します。ユーザーが「PropertyChanged」イベントをサブスクライブしてから、引数を調べて、プロパティ「値」がそれを送信したかどうかを確認する必要はありません。だから、私は追加します:
これにより、バインドが解除されます。プロパティの変更は言うまでもなく、ソースは検証時にも更新されません。
ValueChanged イベントの名前を FeckingValueChanged などに変更する必要があると思います。
フレームワークが最初に発生した ValueChange イベントで実際に何かを行ったとしても、私はそれほど気にしません!
wpf - .netpropertychange通知ハンドラー-文字列と式
WPFを使用することで、INotifyPropertyChangedのファンになりました。式を受け取り、名前を文字列として返すヘルパーを使用するのが好きです(以下のサンプルコードを参照)。しかし、非常に熟練したプログラマーが目にする多くのアプリケーションでは、文字列を生で処理するコードが見られます(以下の2番目の例を参照)。熟練とは、エクスプレッションの使い方を知っているMVPタイプを意味します。
私にとって、簡単なリファクタリングに加えて、コンパイラーにミスをキャッチさせる機会は、Exressionアプローチをより良くします。私が見逃している生の文字列を使用することに賛成する議論はありますか?
乾杯、ベリール
式ヘルパーの例:
生の文字列のサンプルコード(一部のViewModelBase型クラス):