2010-07-21 32 views
2

在凍結對象之前是否需要始終檢查CanFreezeCanFreeze何時可以使用?

如果我看PresentationOptions:Freeze用於標記,它沒有完成。因此我不認爲,必須在everey對象創建之前調用CanFreeze。

但CanFreeze何時可以使用?

回答

2

你不必調用CanFreeze但如果你不這樣做,你的目標是可凍結的InvalidOperationException將被拋出(見凍結的"remarks"部分())。所以CanFreeze是一個選項,允許你調用Freeze()而不會冒任何異常。

有幾種情況下,調用Freeze()會導致異常。從Freeze()參考 直接報價:

無法凍結可凍結對象 如果滿足下列條件 任何一個是關於對象的真實:

  • 它有動畫或數據綁定 性質。

  • 它具有由 動態資源設置的屬性。有關動態資源的更多信息,請參閱 資源概述。

  • 它包含無法凍結 的Freezable子對象。

+0

+1是的,但在這種情況下是否有必要?什麼時候出現問題?如果我創建一個SolidColorBrush的新實例?可能不會。正如我在我的文章中寫道的,MS也不在它的PresentationOptions實現中:Freeze(如果將值設置爲true)。我的問題是,如果它有一些缺陷,但可能我的問題是不確定的。無論如何感謝您的答案。 – HCL 2010-07-21 18:31:14

+0

更新了我的答案,引用了幾個可以通過Freeze()防止發生異常(如果有條件地調用CanFreeze)的例外情況。 – andyp 2010-07-21 18:54:49

+0

可以提供可凍結控件的列表嗎? – 2012-09-28 18:59:28