首页 > 解决方案 > WPF 为网格控件保存“背景”属性的最佳方式

问题描述

我有一个设置了 LinearGradientBrush 的网格。 在此处输入图像描述 我的目标是将“Grid.Background”属性保存到 MySQL 数据库中,然后将它们作为模式检索。

我已经查找了序列化,但“背景”类是“未标记为可序列化”。

有什么想法我该怎么做?

标签: c#mysqlwpf

解决方案


我个人会使用XamlWritersXamlReaders,它们允许您在 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”并将其解析为网格。然后将主网格设置为相同的背景。


推荐阅读