2017-10-20 8 views
-1

IsEnabledプロパティがデータコンテキストの読み取り専用プロパティにバインドされているチェックボックスがあります。しかし、結果はいつも期待どおりではありません。実際には、そのプロパティは、ビューモデルのコンストラクタのタスク(スレッド)で計算されていますWPFプロパティの値がバインドされた値と異なる

私は計算された値は何とか違いはありますが、スヌープを調べると、チェックボックスのIsEnabledプロパティがFalseとデータコンテキストそのプロパティはTrueです。

これはスレッディングによるものだと思っていますが、そのスレッドの実行を完了する前にビューが読み込まれると、間違った値が表示されます。

は、以前私が、私はこの

を使用しますが、私はフレームワークを使用しています何の変化、任意の提案

はありません、これを固定することを期待してその後

IsEnabled="{Binding IsFeatureAvailable}" 

を結合するためにこれを使用しましたバージョン4.5.2およびMVVM用Caliburn micro

+3

あなたはINotifyPropertyChangedインターフェイスを実装していますか?どのようにソースプロパティを設定しますか? – mm8

+0

MultiThreadingを使用している場合は、 'Dispatcher'の使用を検討し、UIスレッドで通知をトリガーしてください。 Dispatcherを介して 'OnPropertyChanged'を呼び出さなかったので通知が表示されないという問題がありました。 – XAMlMAX

答えて

2

tを実装する必要があります彼INotifyPropertyChangedインタフェースとそれが新しい値に設定されていますたびIsFeatureAvailableプロパティのPropertyChangedイベントを発生させる:

public class ViewModel : PropertyChangedBase 
{ 
    private _isFeatureAvailable; 
     public bool IsFeatureAvailable 
    { 
     get { return _isFeatureAvailable; } 
     set 
     { 
      _isFeatureAvailable = value; 
      NotifyOfPropertyChange(() => IsFeatureAvailable); 
     } 
    } 
} 
+0

@MegaMind:問題が解決した場合は、是非回答を受け入れてください:https://stackoverflow.com/help/someone-answers – mm8

関連する問題