c# - WPF 为网格控件保存“背景”属性的最佳方式
问题描述
我有一个设置了 LinearGradientBrush 的网格。 我的目标是将“Grid.Background”属性保存到 MySQL 数据库中,然后将它们作为模式检索。
我已经查找了序列化,但“背景”类是“未标记为可序列化”。
有什么想法我该怎么做?
解决方案
我个人会使用XamlWriters和XamlReaders,它们允许您在 GUI 中编写和读取 XAML。像这样:
XAML:
<Grid x:Name="mainGrid">
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF187F25" Offset="0"/>
<GradientStop Color="#FF17FF1A" Offset="1"/>
<GradientStop Color="#FF690909" Offset="0.421"/>
</LinearGradientBrush>
</Grid.Background>
</Grid>
C#
using System.Windows.Markup;
保存
string BackgroundString = XamlWriter.Save(mainGrid);
然后可以将该字符串作为纯文本存储在您的数据库中。
阅读
Grid tempGrid = XamlReader.Parse(BackgroundString) as Grid;
mainGrid.Background = tempGrid.Background;
然后从数据库中读取字符串“BackgroundString”并将其解析为网格。然后将主网格设置为相同的背景。
推荐阅读
- javascript - JSLink 到 SharePoint 列表中的超链接列
- mongodb - 在MongoDB中查找子文档中两个条件为真的所有文档
- javascript - 剑道 TabStrip 和传单地图
- tsql - 对于查询中的某些条件,如何将字段值更改为 null?
- html - 网格布局有问题。块从它们的继承块中脱落
- javascript - 活动链接适用于嵌套路由但不适用于单个路由
- php - 如何在 Laravel 中使用文件夹 App\Http\Controllers 外的控制器?
- javascript - 带条件插值的管道
- javascript - 将异步值存储在局部变量中并将其显示在模板中的角度方式
- php - preg_replace 正负和 0