我正在使用XamlWriter
将资源字典保存到Xaml
,我注意到对于只有{p}
的string
属性,XamlWriter
会在文本之前添加一个{}
(生成{}{p}
(。
为什么会发生这种情况?有什么办法可以防止这种情况发生吗?或者至少在使用标准XDocument.Parse()
进行读回时安全地将其删除?
以下是我保存它的方法:
public class Example
{
public string Property { get; set; }
}
var resource = new ResourceDictionary();
resource.Add("Example", new Example { Property = "{p}" });
var settings = new XmlWriterSettings
{
Indent = true,
IndentChars = "t",
OmitXmlDeclaration = true,
CheckCharacters = true,
CloseOutput = true,
ConformanceLevel = ConformanceLevel.Fragment,
Encoding = Encoding.UTF8,
};
using (var fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None))
using (var writer = XmlWriter.Create(fileStream, settings))
XamlWriter.Save(resource, writer);
编辑
{}
是当文本包含像{...}
这样的开括号和闭括号时添加的一个scape序列。
https://learn.microsoft.com/en-us/dotnet/desktop/xaml-services/escape-sequence-markup-extension
现在,剩下的唯一问题是如何安全地从文本中删除这些scape序列。我可以简单地进行更换或修剪吗?或者已经有方法了吗?
大括号被添加到正在序列化的值中的转义大括号中。你真的不应该移除它们。
或者已经有了这样的方法了吗?
不,没有如果您想修改书面文本,您可以自己修改。使用CCD_ 11或类似物就足够了。没有比这更好的内置方式了。