5

私のWPFアプリケーションには、ユーザーに表示したいブール値のプロパティがあります(たとえば、読み取り専用のチェックボックスを使用)。通常、INotifyPropertyChangedを実装して、WPFがそれに基づいて動作し、それに応じてチェックボックスを変更できるようにします。

私が今抱えている問題は、このプロパティ値が閉じたフレームワークから取得されることです。つまり、値をポーリングすることしかできませんが、サブスクライブできる変更イベントはありません。

私が最初に考えたのは、別のスレッドを作成することでした。このスレッドは、定期的に(たとえば、10ミリ秒ごとに)値をポーリングし、値が変更されたときにイベントを作成します。しかし、それは私にはやり過ぎのようです。

だから私の質問は:INotifyPropertyChangedがオプションではない場合に変化する値を表示するためのWPFの機能はありますか?ある種のポーリングメカニズム、多分?そうでない場合、この問題にどのように取り組みますか?

御時間ありがとうございます。

4

2 に答える 2

4

値が制御できない場所からのものである場合は、問題のオブジェクトの「ViewModel」を作成し、それを自分で処理します。

public class ClosedSourceObjectViewModel : ViewModelBase
{
    private ClosedSourceObject ClosedSourceObject
    {
        get;
        set;
    }

    public bool SomeProperty
    {
        get { return this.ClosedSourceObject.SomeProperty; }
        set
        {
            if (value != this.ClosedSourceObject.SomeProperty)
            {
                RaisePropertyChanging("SomeProperty");
                this.ClosedSourceObject.SomeProperty = value;
                RaisePropertyChanged("SomeProperty");
            }
        }
    }
}
于 2010-01-30T16:20:24.333 に答える
0

@Alastairに同意します。なぜなら

(1)プロパティの変更について通知しない閉じたフレームワークから値を取得したい。
(2)値をポーリングすることはできますが、それは実行したくありません。

これを行う他の方法はないと思います:(

于 2010-01-30T16:15:29.193 に答える