我正在尝试对许多XAML文件进行一些批量更改,并且我要通过使用linq的XDocument对它们进行调整来做到这一点。这很好,我可以添加新元素但是我有缩进问题:
文档加载了“PreserveWhitseSpace”,因为我需要保留格式(因为SVN):
_xamlDocument = XDocument.Load(new StringReader(newContent),LoadOptions.PreserveWhitespace);
然后我添加一些元素,当我完成后,我使用:
保存文件_xamlDocument.Save(stringWriter,SaveOptions.None);
新添加的元素不能很好地缩进,看起来不太好(对不起这里的格式,但你会看到/ n字符串):
<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<UserControl x:Class=\"Sonova.Chinook.UserInterface.Common.SimpleProgressView\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Content=\"{Binding}\">\r\n <UserControl.Resources>\r\n \r\n <ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source=\"{ThemeDictionary AssemblyName=Cocoon.UserInterface}\" /><ResourceDictionary Source=\"/Cocoon.UserInterface;component/VisualResources/Controls/ContentControl.xaml\" /></ResourceDictionary.MergedDictionaries></ResourceDictionary></UserControl.Resources>\r\n <UserControl.Style>\r\n <StaticResource ResourceKey=\"SimpleProgressStyle\" />\r\n </UserControl.Style>\r\n</UserControl>
上面的Xml表明,对于以下元素,没有换行符或空格:
<ResourceDictionary Source=\"{ThemeDictionary AssemblyName=Cocoon.UserInterface}\" /><ResourceDictionary
我已经尝试将disableformating设置为保存选项,但似乎都没有导致所需的结果。
有什么想法吗? 最好的问候
答案 0 :(得分:1)
XDocument.Save()
的重载需要XmlWriter
个参数而不是TextWriter
。 XmlWriter.Settings
属性允许您控制缩进等内容。您应该使用XmlWriter
来封装基础流(FileStream
,MemoryStream
等)。