1

ビューモデルプロパティからNotifyPropertyChangeイベントを発生させた後、このエラーが発生します。

UIディスパッチャーを(テストとして)追加しました。問題を一時的に修正したと思われるセッターで呼び出しを呼び出します。

   public FeedTrackingSummary SelectedFeedTracking {
        get { return _selectedFeedTracking; }
        set { 
            Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => {
                _selectedFeedTracking = value; Notify("SelectedFeedTracking");
            }));
        }
    }

以下のSelectedFeedTrackingは、このプロパティにバインドされているドロップダウン値を選択することによって設定されます。

<ComboBox... SelectedItem="{Binding SelectedFeedTracking}"  />

ドロップダウン値を選択すると、エラーが発生します。このプロパティを設定する他のコードはありません。これが発生したときに、私のビューモデルがバックグラウンドスレッドで使用されていると思いますか?

アップデート

INotifyPropertyChangedの呼び出しを削除して、まったく異なるプロパティを設定しようとしましたが、エラーが引き続き発生します。だから私はこれがビューモデル全体のアクセシビリティと関係があると思いますか?

        set { 
            SelectedCalc = -1;
        }
4

1 に答える 1

4

一部の MVVM フレームワーク (Caliburn.Micro など) には、NotifyPropertyChangedプロパティ変更通知を (PropertyChangedイベントを発生させることによって) いわゆる「UI スレッド」に自動的にマーシャリングする基本クラスがあります。

そのため、すべてのプロパティ セッターで (...)する代わりに、Application.Current.Dispatcher.InvokeそのコードをNotify()メソッドに入れます。したがって、ViewModel でプロパティの変更を通知するたびに、UI スレッドで通知するようにします。

于 2012-12-07T22:05:52.433 に答える