2013-02-25 4 views
2

Теперь у меня есть xaml с немецким умляутом (s) ниже, когда я пытаюсь его разобрать, я получаю ошибку 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); 

Я не могу найти ничего, чтобы установить кодировку hint (который будет .net String 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) '' в начале? конечно, я предполагаю, что это * на самом деле UTF-16 ... –

+0

Когда вы сохраняете файл XAML, вы сохраняете с кодировкой 8, 16 или 32 бита? См. Http://stackoverflow.com/questions/10186484/i-cant-write-arabic-text-in-the-xaml-file – CalC

+0

Это была просто строка .net, поэтому я предполагаю UTF-16. Btw, когда я использую XamlReader.Load (Stream ...) ist works. действительно странное поведение :-( –

ответ

5

Отвечая на мой собственный вопрос надежду на то, что это нормально.

Что помогло мне было с помощью

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

M енит.

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

Этот метод, похоже, соблюдает кодировку строковой переменной.

Я до сих пор не понимаю, почему это не работает с Static ParseMethod. Но я надеюсь, что это решение поможет кому-то еще безопасно :-)

+0

Я думаю, что вы должны отметить свой собственный ответ как «ответ», к этому вопросу, поскольку он фактически решает проблему. –

Смежные вопросы