在做即時通訊專案中,使用wpf的mvvm模式,如果在前台繫結vm,經常會顯示波浪線,滑鼠放上去提示未將物件引用設定到物件的例項,但程式能正常執行,後來發現如果前台不繫結vm,在後台cs裡繫結就不會出現此問題。雖然不是大問題,但對於強迫症患者還是很難受的。
沒有必要非得改,因為顯示波浪線這個有時候出現有時候不出現,而且改了,對於純粹的mvvm模式忠實者會嗤之以鼻。另外,因為某個頁面初次載入時需要顯示全部的使用者資料,耗時較長,為了客戶友好性,在初始載入的方法中使用了非同步執行緒載入,介面會先顯示出來,然後就出現了乙個比較難受的問題,程式能正常執行,但是前台介面的設計中顯示報錯了,提示未將物件引用設定到物件的例項,並詳細的指出了問題就出在初始載入的方法中,看不到介面非常難受,必須解決這個問題,上網查詢相關問題,定位到問題出現的原因。
分析原因:
vs會自動的預編譯程式,會按照程式在啟動時的需要解釋xaml,按照xaml中的順序生成控制項,先布局的先生成。在初始載入方法中啟動非同步執行緒,非同步執行緒中使用前台控制項繫結的屬性,與主ui執行緒分屬不同執行緒,vs判定不了先後順序,會認為你使用的屬性尚未例項,前台中會顯示錯誤,正常啟動程式時則不會出現問題。
解決辦法:
在vm中的初始載入方法中新增限制,判斷當介面初始化完畢後在執行,可以使用if (this.isloaded)判斷,也可以直接改變初始載入的事件為loaded。
12"介面恢復正常。loaded
">3"
">45
"closed
">6"
" commandparameter="
">78
未將物件引用設定到物件的例項
今天又遇到了未處理nullreferenceexception未將物件引用設定到物件的例項的錯誤.在google上搜了一下,有以下原因可造成該錯誤的發生.1 viewstate 物件為null。2 dateset 空。3 sql語句或datebase的原因導致datareader空。4 宣告字串變數...
未將物件引用設定到物件的例項
一 網路上的一般說法 1 viewstate 物件為null。2 dateset 空。3 sql語句或datebase的原因導致datareader空。4 宣告字串變數時未賦空值就應用變數。5 未用new初始化物件。6 session物件為空。7 對控制項賦文字值時,值不存在。8 使用request...
未將物件引用設定到物件的例項
物件引用沒有設定到物件例項的原因很多 1 如下 public intrevise refint numline,refint numcircle,refint numtext,system.io.streamwriter str w,list string record,extextend,line...