2013-02-25 16 views
2

現在,我試着解析它時遇到了帶有德語變音符號(s。below)的xaml,我收到了一個invalidchar錯誤。XamlReader和Umlauts

當我不使用XamlParser上下文時,它可以工作。但我不得不使用它,以建立某種類型的映射


XAML:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:test="clr-namespace:BR.UI.Tests.Items;assembly=BR.UI.ViewLocator.Tests" 
    mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> 
    <UserControl.DataContext> 
     <test:SampleViewModel /> 
    </UserControl.DataContext> 
    <Grid> 
     <Label>ö</Label> 
    </Grid> 
</UserControl> 

守則,解析它

var context = new ParserContext(); 
var result = System.Windows.Markup.XamlReader.Parse(xaml,context); 

我找不到任何設置編碼提示(這將是.net字符串UTF-16)我做錯了什麼?

我也試着用XmlParserContext注入編碼。

var xmlcontext = new XmlParserContext(null, null, null, XmlSpace.Preserve, 
              Encoding.Unicode); 

    var context = new ParserContext(xmlcontext); 

但它並沒有幫助:-(

什麼我需要做什麼?是否有某種XAML編碼?

+0

xaml只是xml;你有沒有嘗試添加(因爲你說它是UTF-16)?<?xml version =「1.0」encoding =「UTF-16」?>'在開始時?當然,我假設它*實際上是UTF-16 ... – 2013-02-25 13:39:39

+0

當您保存XAML文件時,是否使用8,16或32位編碼進行保存?請參閱http://stackoverflow.com/questions/10186484/i-cant-write-arabic-text-in-the-xaml-file – CalC 2013-02-25 13:45:22

+0

它只是一個.net字符串,所以我假設UTF-16。 順便說一句,當我使用XamlReader.Load(Stream ...)ist的作品。真的很奇怪的行爲:-( – 2013-02-25 14:17:11

回答

5

回答我的問題,希望是好的。

什麼幫助,我用的是

System.Windows.Markup.XamlReader.Load(stream,XamlParserContext)

中號ethod。

s。 http://msdn.microsoft.com/de-de/library/ms590388.aspx

此方法似乎尊重字符串變量的編碼。

我仍然不明白爲什麼這不適用於Static ParseMethod。但我希望這個解決方案能夠幫助別人安全的時間:-)

+0

我想你應該慶祝自己的答案,「答案」對這個問題,因爲它實際上解決了這個問題。 – 2015-08-21 00:15:08