为什么XamlWriter会向某些属性添加{}



我正在使用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或类似物就足够了。没有比这更好的内置方式了。

相关内容

  • 没有找到相关文章

最新更新