2010-02-05 58 views
2

當我添加這種風格時,它會使我的應用程序出現StackOverflowException異常。WPF:爲什麼會造成堆棧溢出異常?

<Style TargetType="GroupBox" BasedOn="{StaticResource {x:Type GroupBox}}" > 
<!-- <Setter Property="Background" Value="{DynamicResource WindowBackgroundBrush}" /> --> 
</Style> 

萬一它很重要,我使用ShinyBlue主題。

任何想法會導致這種情況?

+0

你能詳細解釋一下嗎?我剛剛創建了一個空的WPF項目並複製/粘貼了你的代碼,添加了一個GroupBox並且工作正常。你是否也在IDE中遇到過麻煩,或者僅在開始時遇到麻煩?調試或發佈編譯?你使用哪個VS版本? SP1安裝?操作系統? – mnemosyn 2010-02-05 00:32:54

+0

VS 2008 SP1。調試模式。它在XAMLPad中起作用。 – 2010-02-05 00:35:53

+0

嗯,就像我的設置一樣,運行在Win 7上。也許你可以發佈更多的代碼來使用它。我只是把它放到一個'Windows.Resources'部分,它工作正常。你有沒有嘗試過一個最小的例子? – mnemosyn 2010-02-05 00:42:47

回答

1

這是一種「已知問題」,至少我記得我也有過它,它基於控件的默認樣式重現了樣式,這些樣式在主題中也有一些默認樣式。 AFAIR,我用我自己的主題,所以我只是去了那些風格的名字,並用名稱而不是{x:Type GroupBox},它幫助了我,但如果你不能這樣做,the Internets advise你將派生樣式移動到更低XAML範圍。

至於異常的根本原因,AFAIR,在默認樣式分辨率中存在一個缺陷,它將主題樣式作爲默認樣式,然後將自定義樣式作爲主題的默認樣式,等等,等等,所以!

+0

是的,這聽起來就像發生了什麼。 – 2010-02-05 02:12:07

1

嘗試更改靜態資源的名稱。