Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取包含特殊字符的ResourceDictionary_C#_Wpf - Fatal编程技术网

C# 读取包含特殊字符的ResourceDictionary

C# 读取包含特殊字符的ResourceDictionary,c#,wpf,C#,Wpf,我有一个例子ResourceDictionary: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=m

我有一个例子
ResourceDictionary

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:s="clr-namespace:System;assembly=mscorlib"
                    xml:space="preserve">

    <!--New line: &#x0d;-->    
    <s:String x:Key="Example.Line">New&#x0d;Line</s:String>
</ResourceDictionary>
有没有办法避免用
XamlReader
替换特殊字符代码


工作黑客 通过使用以下代码转义特殊字符:

//Replaces the special chars.
var text = File.ReadAllText(file, Encoding.UTF8).Replace("&#", "&amp;#");
File.WriteAllText(file, text, Encoding.UTF8);

var dictionary = new ResourceDictionary { Source = new Uri(Path.GetFullPath(file), UriKind.Absolute) }; 

我能够在不丢失新行值的情况下加载我的
ResourceDictionary
。不过,我认为这不是最好的办法/

您可以使用
ParserContext
参数来加载XamlReader。加载:

XamlReader.Load(xaml, new ParserContext() { XmlSpace = "preserve" });

更多信息:

它仍然返回没有特殊字符的字符串。
XamlReader.Load(xaml, new ParserContext() { XmlSpace = "preserve" });