Подкласс сериализации в атрибуте
Можно ли сериализовать подкласс, как только строку атрибута, а не как содержимое?
Что я уже пробовал:
Я сериализую сетку с пользовательским управлением с помощью этого кода
Dim outstr As New Text.StringBuilder() Dim settings As New Xml.XmlWriterSettings() settings.Encoding = Text.Encoding.Default settings.Indent = True settings.IndentChars = (ControlChars.Tab) settings.NewLineChars = vbCrLf settings.NewLineOnAttributes = True settings.OmitXmlDeclaration = True Dim dsm As New Markup.XamlDesignerSerializationManager(Xml.XmlWriter.Create(outstr, settings)) dsm.XamlWriterMode = Markup.XamlWriterMode.Expression Markup.XamlWriter.Save(myGrid, dsm) File.WriteAllText(PathFile, outstr.ToString())
Класс для сериализации
Public Class clsBrush Public Property BrushText As String Get Return _myBrush.ToString End Get Set(value As String) _myBrush = Brushes.AliceBlue End Set End Property End Class
Фактическая сериализация:
<Grid Name="myGrid" Margin="0,0,0,30" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:wa="clr-namespace:WpfApp1;assembly=WpfApp1"> <wa:MyRectangle Position="218.118443788084,112.190399478744,0,0"> <wa:MyRectangle.Fill> <wa:clsBrush>#FFEEE8AA</wa:clsBrush> </wa:MyRectangle.Fill> </wa:MyRectangle> </Grid>
Желаемая сериализация, трасформа
<wa:MyRectangle.Fill> <wa:clsBrush>#FFEEE8AA</wa:clsBrush> </wa:MyRectangle.Fill>
в
Fill="#FFEEE8AA"
Желаемый результат
<Grid Name="myGrid" Margin="0,0,0,30" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:wa="clr-namespace:WpfApp1;assembly=WpfApp1"> <wa:MyRectangle Position="218.118443788084,112.190399478744,0,0" Fill="#FFEEE8AA"/> </Grid>