2012-04-21 412 views
1

當我有好幾個屬性的自定義類,當我創建這個類的一個實例,我把它添加到獨立存儲,以便以後可以檢索,但是一旦我「已經如果我試圖挽救另一個我得到這個例外保存一個:序列化異常節省類的一個實例來的applicationSettings

類型System.Windows.Media.SolidColorBrush數據合同名稱SolidColorBrush(http://schemas.datacontract.org/2004/07/System.Windows.Media)預計不會。將任何未知的靜態類型添加到已知類型列表中 - 例如,使用KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知類型列表中。

我的一個特性是刷不過這裏我就不最初設置該屬性爲什麼是例外只有到來了,當我保存的第二個實例?

任何幫助將是輝煌的感謝:)

+0

你能提供你的代碼嗎?不管怎麼說,這個鏈接可以幫助你[鏈接](http://blogs.msdn.com/b/youssefm/archive/2009/04/21/understanding-known-types.aspx) – 2012-04-22 00:57:26

回答

3

要保存到獨立存儲(使用IsolatedStorageSettings類)的任何對象必須是可序列化使用DataContractSerializer

SolidColorBrush(和任何Brush對於這個問題)是不是與可序列化的市場,所以這是這裏的問題!

爲了解決它,我建議你剛剛保存的畫筆(而不是實際的Brush對象)的顏色,然後檢索,並做出新的SolicColorBrush對象。

+1

我學到了艱辛的道路,你應該從不將任何UI相關項*作爲UI項目序列化* - 而是將其轉換爲您自己的中性數據結構並保存它,這樣,當您更改UI並且您的序列化數據現在已過期時,您不會遇到複雜問題。 – slugster 2012-04-22 12:54:53

+0

謝謝:)我唯一的問題是,我有一個畫筆屬性的原因是因爲我有一個列表框,它顯示了我保存的這個類的所有實例,所以我不知道如何設置單個列表框項目的顏色而無需將前景屬性綁定到我的類實例的顏色屬性。你知道任何其他方式可以達到這種效果嗎? – DomAyre 2012-04-22 16:00:25

+0

如果使用Binding,則可以創建一個轉換器將Color轉換爲SolidColorBrush! [Cimbalino Windows Phone Toolkit](https://github.com/Cimbalino/Cimbalino-Phone-Toolkit)有一個,你可以添加一個對該項目的引用,或者只是複製轉換器[here](https:// github。 COM/Cimbalino/Cimbalino-電話工具包/ BLOB /主/ src目錄/ Cimbalino.Phone.Toolkit /轉換器/ ColorToBrushConverter.cs)! – 2012-04-22 16:47:57