如何判斷當前是不是設計器模式(How to know wether it is in design mode)
情況一
在使用Visual Studio設計XAML時,設計器運行在[設計時]狀態。VS在內部運行這些代碼,從ViewModel計算出屬性的值顯示到XAML界面的控件上,讓我們無需運行程序就可以觀察到UI效果。但是如果ViewModel某個屬性的值需要依賴外部資源,如,需要數據庫取出數據,或者需要透過C++ dll訪問硬件的狀態,這些情況Visual Studio沒辦法計算屬性,XAML便不能顯示真實的數據顯示效果,甚至會導致設計器崩潰,顯示×號。
情況二
當我們自定義控件或用戶控件時,使用System.ComponentModel.DesignerProperties.GetIsInDesignMode方法在控件構造函數及Loaded事件處理中判斷當前環境是否處于DesignMode是一個很好的習慣,以避免在設計時載入控件失敗的問題,或者提供一些期望的展示值,讓使用控件的開發時在編寫代碼時看到一些比較好的展示效果。
設計器崩潰,提示NullReferenceException錯誤

解決辦法是,檢查是否在設計器模式,如果在設計器模式,可以提供模擬數據,運行時它會獲取真實的數據。
下面的IsDesignMode返回true表示設計器模式。
public bool IsDesignMode
{
get
{
return DesignerProperties.GetIsInDesignMode(this); // 在控件類中使用這行
// return DesignerProperties.GetIsInDesignMode(new DependencyObject()); // 在ViewModel中使用這行
}
}

浙公網安備 33010602011771號