在MVVM中使用SL4。Dataform編輯模式&導航離開頁面。 MVVM Silverlight
當我在編輯模式下有一個數據表單,並導航到另一個頁面時,我收到了與嘗試RaisePropertyChanged(對象引用未設置爲對象實例)相關的錯誤。
我發現this並實施它,試圖解決這個問題。我的Dataform絕對是我的CancelEdit函數(我的IEditableObject實現的一部分,位於我的所有模型的基類中)。
我也用合適的值初始化了所有可以爲空的聲明/支持者變量(例如,私有小數_GeneralOverhead = 0.0M),所以我真的很困惑什麼沒有被設置爲對象的實例。
1)拉起數據形式&點擊「編輯項目」按鈕
2)中的一個字段編輯的值
3)導航至另一頁
在:下面的步驟之後發生錯誤這一點,我在我的EditableModelBase(實現IEditableObject)中調用取消編輯。從這裏,這是HTE代碼:
4)內部EditableModelBase:
public void CancelEdit()
{
foreach (var info in CurrentModel.GetType().GetProperties())
{
if (!info.CanRead || !info.CanWrite) continue;
// if (info.Name == "StatusCodeString" || info.Name == "StatusCodeImage" || info.Name == "StatusCodeColor") continue;
var oldValue = info.GetValue(Cache, null);
CurrentModel.GetType().GetProperty(info.Name).SetValue(CurrentModel, oldValue, null);
}
}
在第一次迭代通過我的foreach循環,當它擊中.SetValue(CurrentModel)線,它調用了我的模型。現在,我的模型RaisePropertyChanged中的每個道具,因爲否則我的數據表單不會識別它已被更改(從而允許「取消」按鈕來啓用它自己)。當RaisingPropertyChanged被觸發,它調用這個代碼塊:
protected virtual void RaisePropertyChanged(string propertyName)
{
VerifyPropertyName(propertyName);
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我試着扔在支票上處理&「新PropertyChangedEventArgs」,他們都被實例化。我能想到的唯一事實是我的'this'對象被設置爲(在這種情況下)我的Models.Transactions模型。即使這是真的,我不知道如何解決它。 任何想法?
對不起,我正在露營!這仍然擊中我的RaisePropertyChanged&引發同樣的錯誤。錯誤發生在'處理程序(這是新的PropertycChangedEventArgs(propertyName))'行,沒有我能看到的是null ... :( –