[Silverlight/WP7] 取得目前是否在設計模式中

有些情況下,對執行緒的控制或是對動畫的控制也許很複雜,但是那都只想要在「真實環境」中才執行,而且因為VS設計工具的強大,有時在設計模式時會連執行緒一起跑,進而造成一些意想不到的例外發生導致程式需要關閉

有些情況下,對執行緒的控制或是對動畫的控制也許很複雜,但是那都只想要在「真實環境」中才執行,而且因為VS設計工具的強大,有時在設計模式時會連執行緒一起跑,進而造成一些意想不到的例外發生導致程式需要關閉,像小弟就有遇到這個問題,有圖為證,如下

image

接著不論按是或否,都會把Blend強制關閉,但是在手機上run是沒問題的,只要一回到設計模式,這個問題就頻頻發生,經過一番Trace後發現是執行緒的問題。

那如果在設計模式中是不需要執行某些執行緒的,就可以透過以下方法判斷:

 

            {
                //設計模式中
            }
//或是用下列方式判斷
 if (DesignerProperties.GetIsInDesignMode(this))
            {
                 //設計模式中
            }

備註:如果您是開發WPF或Windows Form的開發人員,要注意在建構式裡面是不能用上述方式判斷

the DesignMode property should not be checked from within the constructor or from any code that the constructor calls. A constructor is called before a control is sited, and it's the site that determines whether or not a control is in design mode. DesignMode will also be false in the constructor.(從這個網址轉載)

意思就是說,如果在建構元裡面用這個方式判斷,無論如何都會傳回false,也就是跟沒有判斷是一樣的,所以應使用下述方法判斷

  {
    //可適用於WPF以及Windows Form於建構元中判斷是否處於設計模式
  }

如有任何錯誤的地方,也請各位多多指教,謝謝。