問題タブ [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.
wpf - INotifyPropertyChanged と DependencyProperty の関係は何ですか?
コントロールのプロパティを XAML で変更できるように、DependencyProperties を使用して簡単な UserControl の例を作成しています (以下のコード)。
しかし、もちろん、私のアプリケーションでは、このコントロールに密結合のコード ビハインドを持たせたくありません。代わりに、ユーザー コントロールは "DataTypeWholeNumberView" というビューになり、"DataTypeWholeNumberViewModel" という独自の ViewModel を持ちます。
したがって、以下の DependencyProperty ロジックを ViewModel に実装しますが、ViewModel では通常 INotifyPropertyChanged を継承します。これにより、同じ機能が得られるようです。
では、次の関係はどのようなものですか。
- UserControl XAML の DataContext をDependencyProperties を持つそのコード ビハインドにバインドする
- UserControl XAML (View) の DataContext をそのViewModel (INotifyPropertyChanged から継承) にバインドし、INotifyPropertyChanged 機能を実装するプロパティを持っていますか?
XAML:
コードビハインド:
extension-methods - 正規の OnPropertyChanged メソッドを拡張メソッドとして記述する方法はありますか?
基本的に私はこのようなことをしたい:
これにより、「System.ComponentModel.INotifyPropertyChanged.PropertyChanged は += または -=" の左側でのみ使用できます。
つまり、これを行うことで回避できます。
しかし、呼び出しコードはそれほど見栄えがよくありません。
対これ:
大したことではありませんが、インスタンスメソッドのように呼び出せるといいですね。
c# - HashSet を ListView アイテムにバインドする (C#、WPF)
HashSet を ListView アイテムにバインドしようとしています。私は自分のコードをここに文書化しました:
それを達成するためのヒントを教えてくれる人はいますか?どうもありがとう!
乾杯
c# - Databinding 以外に、INotifyPropertyChanging / Changed は .NET Framework で使用されますか?
たとえば、BindingList<Person> があり、それをコントロールにバインドする場合、Person クラスが INotfiyPropertyChanging / Changed を実装していない場合、基になる List への変更はコントロールに自動的に表示されません。私の質問は、フレームワークに関する限り、これらのインターフェイスの他の用途はありますか? これらのインターフェイスを使用して、これらのイベントに基づいて独自のアクションを実装することについて話しているのではなく、.NET Framework 自体について話しているのですが、これらのインターフェイスを実装する別の必要性はありますか?
.net - INotifyPropertyChanged を使用した Visual Studio 2008 でのプロパティ設定のデバッグ
別のクラスによって設定されるプロパティを持つクラスがあります。このプロパティ セッター内で、プログラムが爆発します。
実際にプロパティを設定するクラスを知る必要があります。
スタックトレースを見るだけでいいと思っていましたが、INotifyPropertyChanged を使用しているため、探している情報がすべて得られないと思います。
これが役立つ場合のスタック トレースは次のとおりです。
System.Windows.dll!System.Windows.Data.BindingExpression.TargetTextBoxLostFocus(オブジェクト送信者 = {System.Windows.Controls.TextBox}, System.Windows.RoutedEventArgs e = {System.Windows.RoutedEventArgs}) + 0x55 バイト
System.Windows .dll!System.Windows.CoreInvokeHandler.InvokeEventHandler(int typeIndex = 160、System.Delegate handlerDelegate = {System.Windows.RoutedEventHandler}、オブジェクトの送信者 = {System.Windows.Controls.TextBox}、オブジェクトの引数 = {System.Windows. RoutedEventArgs}) + 0x6b3 バイト System.Windows.dll!MS.Internal.JoltHelper.FireEvent(System.IntPtr unmanagedObj = 173934552、System.IntPtr unmanagedObjArgs = 273432032、int argsTypeIndex = 160、文字列 eventName = "M@2910") + 0x335バイト
silverlight - 階層化されたINotifyPropertyChanged
プロパティのINotifyPropertyChangedを実装するクラスがあります。
そのプロパティにバインドされているコントロールがあります。
propertychangedイベントをリッスンする別のクラスがあります。そのクラスのイベントハンドラーで、コード内のプロパティの値を変更します。
私が抱えている問題は、コードによるプロパティの変更が原因で次回起動するときに、イベントハンドラーでロジックを実行したくないということです。
ただし、ユーザーがその間にプロパティの値を変更した場合(非同期GUI入力を介して)、ロジックを起動する必要があります。また、コントロールが更新されることを確認する必要があります(これは双方向バインディングです)。
これが完全に混乱することなくこれを行うための最良の方法は何ですか?
wpf - INotifyPropertyChanged WPF
INotifyPropertyChanged の目的は何ですか。プロパティが変更されるたびにこのイベントが発生することはわかっていますが、ビュー/UI はこのイベントが発生したことをどのように認識できますか。
INotifyPropertyChanged イベントを実装する Customer クラスは次のとおりです。
しかし、プロパティが変更されたことを UI に通知する方法は次のとおりです。ユーザーが最初の名前に null または空を割り当てたときのように、UI に MessageBox を表示するにはどうすればよいですか。
wpf - WPF: Model View View-Model を使用してバインドされたプロパティでコントロールを更新する
WPF アプリに Model View View-Model パターンを使用しています。2 つのプロパティを持つ ViewModel (ページの DataContext として設定) があり、そのうちの 1 つは PropertyChanged イベントを持つエンティティです。イベント ハンドラーで、他のプロパティ (ブール値) の値を何らかの値に設定します。
これで、Button と TextBox のプロパティが最初の読み込みで適切にバインドされ、PropertyChanged イベントが発生して処理が行われます。ただし、ボタンの IsEnable プロパティは、バインド先のプロパティの変更を反映するために更新されません。
ViewModel は次のようになります。
そして、xaml sorta は次のようになります。
ViewModel の基になるプロパティを変更するときに、ボタンの IsEnable プロパティを更新するにはどうすればよいですか?
c# - BindingList のメモリ リーク
私のアプリケーションは、すべての UI コントロールにバインドされる Bindinglist から継承するカスタム リストを使用します。リストは、INotifyPropertyChanged を実装する baseobjects のコレクションです。メモリ リークが疑われ、memprofiler を使用してアプリケーションのプロファイリングを行ったところ、すべてのリストが決して破棄されず、バインディング リストの propertyChanged イベント ハンドラにサブスクライブされているため、それらがくっついていることが確認されました。
ここに私のオブジェクトのサンプルがあります
プロファイラーからの割り当てスタックは次のとおりです
誰かがリストを処分するのを手伝ってくれますか?
皆さんありがとう
ヘンク、あなたは正しかった。問題は、私が言及したコードではなく、フォームの破棄を妨げているデリゲートに絞り込みました。サイトにアップロードする問題を再現するサンプルに取り組んでいます。ありがとう