(該方法同樣適用於調試blend附加進程到XDesProc)
平時大家在做XAML相關開發(wp7、silverlight、wpf)的時候會不會遇到vs設計視圖顯示不出來的問題呢?
每當遇到這樣的問題,我們心里總是很煩,心想:我擦,本來可以改動下就可以立刻看到效果的,現在怎么成這樣了?!怎么看不到了?!
如果團隊開發心理一定暗罵~是誰!是誰!搞成這樣了!
像這樣:

往往會這樣解決
1.用blend編輯xaml,在vs顯示不出來,blend里面正常。
2.改動不大懶的開blend,在vs盲改兩下運行起來看效果,然后看到不滿意再停下程序
盲改兩下,往往項目大了運行的過程會花費很多多余的時間。
然后忍氣吞聲 湊湊呼呼的直到項目做完………………
原因:
出現這種問題一般是因為界面綁定的vmodel里面的數據取不到,綁定的目標內部有計算錯誤,或者xaml有樣式錯誤。
這些錯誤可能不影響程序的運行,然后大多數開發人員就不太關心,一心往下寫代碼,實際上這類錯誤放的越久
不容易查找還影響我們的工作效率。比如某個xaml頁面一進去就crash掉了。運氣好的給你提示個錯誤位置,運氣不好的~擦,
完全告訴你哪出的錯,你就苦逼的一點一點鎖定錯誤目標范圍吧。
還有為什么那些數據在運行起來就有了呢,
為什么在設計的時候沒有數據?
舉個例子 比如你綁定的數據需要從數據庫取出來,運行程序比然有取數據的邏輯代碼,當界面顯示出來之前
你已經走完了這套邏輯並取出了數據。
那么設計視圖里面綁定的時候要顯示前不會啟動你的代碼邏輯所以它只能報錯了。
解決方案:
怎么樣可以快速的查找出設計視圖不顯示的問題呢,看,出殺手鐧了
在已打開你的項目情況下,再打開同樣的一個項目,
就是打開兩個你要開發的項目……
用第二個vs 按快捷鍵ctrl+alt +p 呼出attach to process窗口

附加到你ide的devenv.exe進程上 點attach
這時候調試已經開始,接下來回到設計視圖

點擊click here to reload the designer
現在如果不出意外的話已經報錯了~
看看你的代碼那里出了問題。如果是xaml錯誤改掉就OK了
如果是數據問題加上一個判斷:
bool designTime = (bool)DesignerProperties.IsInDesignModeProperty.GetMetadata(
typeof(DependencyObject)).DefaultValue
判斷一下當前是不是設計模式如果是給他個假數據。
改好再看看!久違的設計界面出來了~~以后可以隨時隨地看設計視圖!!
撒花~~~
參考:
http://blogs.msdn.com/b/kirillosenkov/archive/2008/12/07/how-to-debug-crashes-and-hangs.aspx
http://www.codeproject.com/Tips/61862/Detect-Design-Time-Mode-in-Silverlight
http://www.codeproject.com/Tips/590634/Designer-Debugging-in-WinRT
