1

从视图模型属性引发 NotifyPropertyChange 事件后,我收到此错误。

我在 setter 上添加了(作为测试)一个 UI Dispatcher.Invoke 调用,它似乎暂时解决了这个问题。

   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 回答