問題タブ [propertychanged]
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 - wpfupdateListViewItemバックグラウンドプロパティ
ThreadSafeObservableCollectionにバインドされているリストビューがあります。これらの各アイテムの背景は、カラーコンバーターを介して実行される列挙型に設定されています。これら2つの設定のコードは次のとおりです。
私がしたいのは、listviewItemの背景色が列挙値に基づいて赤-黄-緑に変わることです。これは、ビジネスロジックルールに基づいて更新されます。これは現在機能していますが、アイテムの初期表示のみです。listItemViewがバインドされているオブジェクトの「Status」プロパティを変更しても、背景が更新されません。コレクションからオブジェクトを削除し、ステータスを変更してから、コレクションに再度追加すると、背景が更新されます。
オブジェクトIPropertyNotifyを作成し、statusプロパティchanged setterにイベントをスローしようとしましたが、機能しませんでした。
リストビューアイテムの背景を更新するために私がしなければならない特別なことがあるかどうか誰かが知っていますか。この問題を解決する方法については、他のアイデアも受け付けています。ありがとうございます。これがListViewのXAMLです。EncoderService.Encodersは、エンコーダーオブジェクトの私のThreadSafeObservableCollectionです。
c# - ObservableCollectionPropertyChangedイベント
ObservableCollection
サブクラス化してプロパティを追加したいと思います。残念ながら、PropertyChanged
イベントは保護されています。SelectedItem
基本的に、MVVMWPFアプリのリストにバインドできるようにサブクラス化したいと思います。
これが私のクラスのスケルトンです:
しかし、私は次のことを行うことはできません。
アクセス制限のため。これにより、私はより深い質問をするようになります。UIはPropertyChanged
イベント(カウントプロパティなど)をどのように通知されますか?コードビハインドでは実行できないことに注意してください。
私の頭は回転しています、誰かが私を教えてくれませんか?
configuration - app.config の設定の変更を監視する
タイプセーフなアプリケーション設定を使用すると、app.exe.config ファイルに次のようなものがあります。
Settings.Designer.vb は次のようなことを行います。
そして、次のような方法で設定にアクセスできます。
Settings.IntervalTimeout
この設定の変更を外部から監視するためのベスト プラクティスは何ですか。つまり、設定はサービスとして実行されているアプリケーションによって使用され、誰かが対応する構成ファイルを開いて IntervalTimeout を 30 などに変更すると、サービス アプリケーションは通知を受け取り、自分自身を再構成するために私が指示したことを何でも実行します。
通常、初期化中に次のようなものを使用していました。
そして、変更されたプロパティの名前をチェックし、適切に反応する Eventhandler を実装します。
ただし、PropertyChanged イベントは、Set メソッドがプロパティで呼び出されたときにのみ発生し、誰かがファイル内のデータを直接変更した場合には発生しません。もちろん、これは天国だったでしょうが、これがうまくいかないことは理解できます。;-)
おそらく、filesystemwatcher を実装してファイルの変更を監視し、構成をリロードして、何が変更されたかを調べ、それらの変更を反映するために必要なことをすべて実行します。
誰かがより良い方法を知っていますか? それともサポートされているものですか?
c# - WPFデータバインディングに問題がありますが、どのような種類かを推測する必要があります
私は自分のwpfプロジェクトにプロパティ変更イベント(または適切な方)を実装しようとしていますが、これを行うための最良の方法を見つけようとしています。
展開/折りたたみアイコンがあるこのヘッダーがあり、ウィンドウに複数のヘッダーがある可能性があります。すべてのヘッダーが最初にリストされているときにデフォルトを折りたたむ必要がありますが、ユーザーが一部のヘッダー(すべてではない)を展開するときに、ウィンドウで[更新]をクリックしてヘッダーを更新するときに、そのままにしておきます更新される前でした。
したがって、ヘッダー1と2が展開され、3と4が折りたたまれている場合、更新ボタンを押したときに、実際にそれを覚えておく必要があります。問題は、「更新」をクリックすると、ビュー全体が更新されるため、情報が失われることです。
情報を格納するためにこれらのヘッダーをホストする実際のクラスにコレクションを作成しようとしているので、ヘッダーが展開または折りたたまれたときに、展開/折りたたみが発生したことをコレクションに通知し、その値を更新したいと思います。コレクションなので、更新ボタンがクリックされたときに、更新前にヘッダーがビューにすでに存在していた場合はGUIDと比較し、保存された展開/折りたたみ情報で新しいヘッダーを更新して、更新後も更新できます。その状態を保持します。
wpf - WPF CustomControl: PropertyChangedCallback の後に呼び出される OnApplyTemplate
PropertyChangedCallback を持つ依存関係プロパティを持つ WPF CustomControl を作成しています。その Callback メソッドでは、GetTemplateChild() メソッドを使用して OnApplyMethod から取得したコントロールの一部に値を設定しようとしています。
問題は、PropertyChangedCallback が (一部のシステムでは) OnApplyTemplate の前に呼び出されるため、コントロール パーツがまだ null であることです。
私が現在使用している回避策は、e.NewValue を PropertyChangedCallback からメンバー変数に保存してから、OnApplyTemplate() で SetValue(dp, _savedValue) を呼び出すことです。
この問題に対処する適切な方法は何ですか、またはすでに最適なソリューションを使用していますか?
java - PropertyChangeListenerによるロック戦略
いくつかの「観察可能な」プロパティを持つクラスを定義しました。内部的に、クラスにはI/Oを実行する単一のスレッドが含まれています。例えば
私の質問は、クラスのロックを保持している間、プロパティ変更イベントを発生させないようにする必要がありますか?...または、単一の専用スレッド(「event-multicaster」スレッドなど)からプロパティ変更イベントを発生させる必要がありますか?
現在の設計ではデッドロックが発生しており、スレッドAは外部クラスのロックを取得します。Bar
次に、メソッドを呼び出してFoo
2番目のロックを取得しようとします。ただし、同時に、I / OスレッドはsetState(State)
ロックオンの取得を呼び出しますFoo
。これにより、プロパティ変更イベントが含まれているクラスに伝播され、Bar
このクラスのロックを取得しようとします...デッドロックが発生します。つまり、プロパティ変更コールバックの設計は、ロックが取得される順序を効果的に制御できないことを意味します。
私の現在の回避策は、状態を作成してキーワードvolatile
を削除することsynchronized
ですが、これは厄介なようです。一つには、それはプロパティ変更イベントが発生する順序が保証されていないことを意味します。
inotifypropertychanged - PropertyChangedイベント、OnClick時に発生しますか?
INotifyPropertyChangedを実装し、イベントをビジネスオブジェクトレイヤーに戻すフォーム上のいくつかのコントロールとBindingSourceを介してPropertyChangedイベントをフックするいくつかのビジネスオブジェクトを備えたWinFormsアプリケーションがあります...
1つだけ問題があります。コントロールがフォーカスを失った場合を除いて、すべてが正常に機能します。たとえば、ユーザーはテキストフィールドを変更しますが、「保存」ボタンを押す前に、実際にはどこかで他のコントロールをクリックする必要があります(たとえば、別のコントロールにフォーカスを合わせる必要があります)。
これをOnClickなどに接続して、ユーザーがテキストを入力すると(または、ドロップダウン値を変更した後でも)変更がビジネスオブジェクトレイヤーに伝達されるようにする方法はありますか?ユーザーに強制する必要はありません。保存する前に別のテキストボックスをクリックしますか?
グーグルは私をどこにも導きませんでしたが、WPF =(でこれを簡単に行う方法の例になりました。しかし、WinFormsの例はありません...
お知らせ下さい、
ドリュー
c# - C#-別のプロパティ(ObservableCollection)への変更に基づいてプロパティの値を変更するにはどうすればよいですか?
PublicationのReadプロパティが変更された場合、TotalPublicationsReadの値を変更するにはどうすればよいですか?
前もって感謝します。
.net - .NETがINotifyPropertyChanged.PropertyChangedイベントの受信時に影響を受けていないプロパティの値を読み取るのはなぜですか?
私はデータバインディングに不慣れで、今日、私が理解できない次の奇妙なことに遭遇しました。
2つのラベル(labelAとlabelB)と2つのボタン(buttonAとbuttonB)を持つフォームがあります。
フォームは、2つのプロパティ(CountAとCountB)を持つオブジェクト(「formState」と呼ばれる)をホストします。labelA.TextはformState.CountAにデータバインドされ、labelB.TextはformState.CountBにデータバインドされます。
buttonAが押されると、formStateはプロパティ名として「CountA」を使用してPropertyChangeイベントを発生させます。buttonBが押されると、プロパティ名として「CountB」を使用してformState.PropertyChangeが発生します。
buttonAが押されるとlabelAだけが更新され、buttonBが押されるとlabelBだけが更新されると思います。ただし、いずれかのボタンを押すと、両方のラベルが更新されます。CountAプロパティとCountBプロパティは、値が読み取られるたびにインクリメントしてカウンターを返すため、これを確認できます。以下のコード。
誰かがこの振る舞いについて説明がありますか?
c# - C# - プロパティが変更されたかどうかを判断する方法
public プロパティ (getter と setter を持つ) が変更されたかどうかを知る必要があります。プロパティは単純なクラスです (ユーザー コントロール/コンポーネントなどはありません)。
プロパティが変更されたときに通知するある種のイベントにサブスクライブするエレガントな方法はありますか?
Microsoft が Binding オブジェクトで (リフレクターを使用して) 何を行っているかを確認しようとしたため、PropertyDescriptor.AddValueChanged メソッドを調べてみましたが、うまくいきませんでした。コンポーネント/ユーザーコントロールでのみ機能する可能性があります...
助言がありますか?
ありがとう、
アディ・バルダ