WinRT:有什么方法可以 (Json,XML) 在 C# 中序列化 XAML UIElement?
WinRT: In there any way to (Json,XML) serialize a XAML UIElement in C#?
我正在尝试保存 XAML UIElement(Grid、Button、TextBlock..等)的属性并通过保存整个控件再次恢复它。
所以我的第一个选择是对控件进行 JSONize -serialize- 并将其保存为字符串,然后通过 Newtonsoft.Json:
中的 JsonConvert 方法恢复它
这是我的代码:
Grid grid = new Grid { Background = new SolidColorBrush(Colors.Red), Margin = new Thickness(0, 5, 0, 0) };
string jsonStringGrid = JsonConvert.SerializeObject(grid);
但是,一个奇怪的例外是:
An unhandled exception of type 'System.WhosebugException'
occurred in mscorlib.ni.dll
然后我尝试用我想要的属性制作一个 class,所以不需要序列化整个网格,只需我的新 class:
public class MyGridClass
{
public Brush Background { get; set; }
public Thickness Margin { get; set; }
}
没有复杂的类型和属性..但同样的异常再次发生。
然后我尝试将 Brush
类型更改为 string
并仅使用 "Red" 来测试它,我尝试对其进行序列化并且它正在工作!
画笔类型有什么问题?
有没有办法保存一个 XAML 控件并恢复它 w/o 手动序列化?
我不知道我无法解析或序列化的属性到底是什么,但是如果有这些属性的列表,那对我来说会很好..
答案非常简单。 XAML Brush
不可序列化。
Windows.UI.Color
是可序列化的。将其保留为 属性。然后使用
var newBrush = new SolidColorBrush(newColor);
希望对您有所帮助!
我正在尝试保存 XAML UIElement(Grid、Button、TextBlock..等)的属性并通过保存整个控件再次恢复它。 所以我的第一个选择是对控件进行 JSONize -serialize- 并将其保存为字符串,然后通过 Newtonsoft.Json:
中的 JsonConvert 方法恢复它这是我的代码:
Grid grid = new Grid { Background = new SolidColorBrush(Colors.Red), Margin = new Thickness(0, 5, 0, 0) };
string jsonStringGrid = JsonConvert.SerializeObject(grid);
但是,一个奇怪的例外是:
An unhandled exception of type 'System.WhosebugException' occurred in mscorlib.ni.dll
然后我尝试用我想要的属性制作一个 class,所以不需要序列化整个网格,只需我的新 class:
public class MyGridClass
{
public Brush Background { get; set; }
public Thickness Margin { get; set; }
}
没有复杂的类型和属性..但同样的异常再次发生。
然后我尝试将 Brush
类型更改为 string
并仅使用 "Red" 来测试它,我尝试对其进行序列化并且它正在工作!
画笔类型有什么问题? 有没有办法保存一个 XAML 控件并恢复它 w/o 手动序列化?
我不知道我无法解析或序列化的属性到底是什么,但是如果有这些属性的列表,那对我来说会很好..
答案非常简单。 XAML Brush
不可序列化。
Windows.UI.Color
是可序列化的。将其保留为 属性。然后使用
var newBrush = new SolidColorBrush(newColor);
希望对您有所帮助!