为啥 XamlWriter 会为某些属性添加 ?
Posted
技术标签:
【中文标题】为啥 XamlWriter 会为某些属性添加 ?【英文标题】:Why does XamlWriter adds a to some attributes?为什么 XamlWriter 会为某些属性添加 ? 【发布时间】:2021-07-13 06:28:23 【问题描述】:我正在使用XamlWriter
将资源字典保存到Xaml
,我注意到对于只有p
的string
属性,XamlWriter
在文本前添加了(导致@987654328 @)。
为什么会这样?有什么办法可以防止这种情况发生吗?
或者至少在使用标准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);
编辑
是当文本包含像
...
这样的左方括号和右方括号时添加的转义序列。
https://docs.microsoft.com/en-us/dotnet/desktop/xaml-services/escape-sequence-markup-extension
现在,剩下的唯一问题是如何安全地从文本中删除这些转义序列。我可以简单地进行替换或修剪,还是已经有方法了?
【问题讨论】:
这不是必需的,问题是关于理论的,但我已经知道它为什么会发生。我只是想知道是否有一种简单且安全的方法可以从 Xaml 中删除 scape 序列。 大括号用于绑定。所以删除括号绑定将不起作用。 【参考方案1】:花括号被添加以在被序列化的值中转义大括号。你不应该真的删除它们。
或者已经有方法了?
不,没有。 如果你想修改书面文字,你自己。使用 string.Replace
或类似的就足够了。没有更好的内置方式。
【讨论】:
以上是关于为啥 XamlWriter 会为某些属性添加 ?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 GCM 会为某些 android 设备返回空的注册 ID?
“aspNetDisabled”类在哪里定义,为啥 ASP.NET 会为它呈现干扰性的重复 CSS“类”属性?