我試圖保存XAML UIElement(Grid,Button,TextBlock..etc。)的屬性並通過保存整個控件來重新恢復它。 所以我的第一個選擇是JSONize -serialize-控件並保存爲字符串,然後通過JsonConvert方法Newtonsoft.Json恢復它:WinRT:有沒有辦法(Json,XML)在C#中序列化XAML UIElement?
這裏是我的代碼:
Grid grid = new Grid { Background = new SolidColorBrush(Colors.Red), Margin = new Thickness(0, 5, 0, 0) };
string jsonStringGrid = JsonConvert.SerializeObject(grid);
但是,一個奇怪的例外,說:
類型的未處理的異常「 System.StackOverflowException' 發生在mscorlib.ni.dll
然後我試着與我想要的屬性的類,所以沒有必要序列化整個網格,只是我的新類:
public class MyGridClass
{
public Brush Background { get; set; }
public Thickness Margin { get; set; }
}
沒有複雜類型和屬性..但同樣的異常再次發生。
然後,我試圖將Brush
類型更改爲string
與「紅色」來測試它,我試圖序列化它,它的工作!
刷子類型有什麼問題? 有沒有辦法保存XAML控件並將其恢復爲無手動序列化?
我不知道到底是我不能分析或序列,但如果有這些屬性的列表,那將是對我好屬性..
一個猜測是'Brush'的Dispatcher屬性導致了/ a問題。它絕對不打算被序列化。 – WiredPrairie
將答案標記爲答案可能有意義。 –