0

次のように、RichTextBoxをXAMLに保存するSilverlightアプリケーションがあります。

  <Comentario>
  <Section xml:space="preserve" HasTrailingParagraphBreakOnPaste="False" xmlns="http://www.schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Paragraph FontSize="22" FontFamily="Arial" Foreground="#FF000000" FontWeight="Normal" FontStyle="Normal" FontStretch="Normal" CharacterSpacing="0" Typography.AnnotationAlternates="0" Typography.EastAsianExpertForms="False" Typography.EastAsianLanguage="Normal" Typography.EastAsianWidths="Normal" Typography.StandardLigatures="True" Typography.ContextualLigatures="True" Typography.DiscretionaryLigatures="False" Typography.HistoricalLigatures="False" Typography.StandardSwashes="0" Typography.ContextualSwashes="0" Typography.ContextualAlternates="True" Typography.StylisticAlternates="0" Typography.StylisticSet1="False" Typography.StylisticSet2="False" Typography.StylisticSet3="False" Typography.StylisticSet4="False" Typography.StylisticSet5="False" Typography.StylisticSet6="False" Typography.StylisticSet7="False" Typography.StylisticSet8="False" Typography.StylisticSet9="False" Typography.StylisticSet10="False" Typography.StylisticSet11="False" Typography.StylisticSet12="False" Typography.StylisticSet13="False" Typography.StylisticSet14="False" Typography.StylisticSet15="False" Typography.StylisticSet16="False" Typography.StylisticSet17="False" Typography.StylisticSet18="False" Typography.StylisticSet19="False" Typography.StylisticSet20="False" Typography.Capitals="Normal" Typography.CapitalSpacing="False" Typography.Kerning="True" Typography.CaseSensitiveForms="False" Typography.HistoricalForms="False" Typography.Fraction="Normal" Typography.NumeralStyle="Normal" Typography.NumeralAlignment="Normal" Typography.SlashedZero="False" Typography.MathematicalGreek="False" Typography.Variants="Normal" TextOptions.TextHintingMode="Fixed" TextOptions.TextFormattingMode="Ideal" TextOptions.TextRenderingMode="Auto" TextAlignment="Left" LineHeight="0" LineStackingStrategy="MaxHeight">
  <Run FontSize="22" FontFamily="Janda Apple Cobbler" Foreground="#FF000000">My TEXT</Run>
  </Paragraph>
  </Section>
  </Comentario>

XAMLを読み取る必要のあるローカルWPFアプリケーションもあります。WPFのrichtextboxはXAMLをサポートしていないため、このXAMLをFlowDocumentに変換する必要があります。私はそれを行うための多くの方法を試しましたが、エラーも発生します:

コード1:

        StringReader stringReader = new StringReader(xamlString);
        System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader);
        Section sec = XamlReader.Load(xmlReader) as Section;
        FlowDocument doc = new FlowDocument();
        while (sec.Blocks.Count > 0)
        {
            var block = sec.Blocks.FirstBlock;
            sec.Blocks.Remove(block);
            doc.Blocks.Add(block);
        }

エラー:

Primeraexcepcióndeltipo'System.Windows.Markup.XamlParseException'en PresentationFramework.dll

Informaciónadicional:'不明なタイプを作成できません'{ http://www.schemas.microsoft.com/winfx/2006/xaml/presentation }セクション'。' 行番号「1」および行位置「2」。

コード2:ParserContextの使用

        System.Windows.Markup.ParserContext parserContext = new System.Windows.Markup.ParserContext();
        parserContext.XmlnsDictionary.Add("", "http://schemas.microsoft.com/winfx/2006/xaml/presentation");
        parserContext.XmlnsDictionary.Add("x", "http://schemas.microsoft.com/winfx/2006/xaml");
        StringReader stringReader = new StringReader(xamlString);
        System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader);
        Section sec = XamlReader.Load(xmlReader,parserContext) as Section;
        FlowDocument doc = new FlowDocument();
        while (sec.Blocks.Count > 0)
        {
            var block = sec.Blocks.FirstBlock;
            sec.Blocks.Remove(block);
            doc.Blocks.Add(block);
        }

エラー:エラー14'System.Windows.Markup.XamlReader.Load(System.IO.Stream、System.Windows.Markup.ParserContext)'に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります

助けてください。ローカルのWPFアプリケーションでSirvelightで作成されたXAML文字列を読み取る方法を見つける必要があります。

4

1 に答える 1

0

初め

http://www.schemas.microsoft.com/winfx/2006/xaml/presentation

する必要があります

http://schemas.microsoft.com/winfx/2006/xaml/presentation

これがタイプミスであると仮定すると、次の問題はXAMLパーサーの使用です。Comentario、Section、およびParagraphがWPFに存在する場合でも、それらは異なる名前空間に存在する可能性があり、異なるプロパティを持つ可能性があります。

XAMLをFlowDocumentに変換することを辞任していることを考えると、XAMLパーサーをスキップするのがおそらく最善でしょう。

XamlReaderの代わりにXDocumentを使用しないのはなぜですか?

于 2013-02-19T07:24:29.630 に答える