2014-02-08 2 views
0

Я загружаю данные из сети, а затем используя библиотеку Html2Xaml, генерирующую XAML из полученного файла HTML, и связывает полученную строку с RichTextBlock.DataContext, но когда вы открываете страницу, пустое, что я делаю неправильно?Как поместить текст XAML в richtextblock?

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <RichTextBlock> 
     <RichTextBlock.DataContext> 
      {Binding Content} 
     </RichTextBlock.DataContext> 
    </RichTextBlock> 
</ScrollViewer> 

Содержимое становится настолько переменной:

var item = await SampleDataSource.GetItemAsync((String)e.NavigationParameter); 
HtmlDocument link_page = new HtmlDocument(); 
link_page.LoadHtml(await LoadPage(item.UniqueId)); 
HtmlNode _table2 = link_page.GetElementbyId("main_body"); 
item.Content = Html2XamlConverter.Convert2Xaml(_table2.WriteContentTo()); 
//Content now looks like this: "<Paragraph LineStackingStrategy="MaxHeight">Процедурная генерация карты (часть 1)</Paragraph><Paragraph LineStackingStrategy="MaxHeight"></Paragraph><Paragraph LineStackingStrategy="MaxHeight">Автор: <Bold>Артем Гуревич</Bold></Paragraph><Paragraph LineStackingStrategy="MaxHeight">..." 
this.DefaultViewModel["Item"] = item; 
+0

Вы ниже этого использования? https://github.com/MacawNL/WinRT-RichTextBlock.Html2Xaml/blob/master/Readme.md#usage – Xyroid

+0

Поместите весь код Xaml, пожалуйста – AymenDaoudi

ответ

0

Если ваша логика преобразования HTMLToXaml работает, и если ваш DataContext установлено правильно, то проблема будет то, что вы не затрагивая текст к вашему RichTextBox, установка DataContext не достаточно, вы должны сделать:

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <RichTextBlock> 
     <RichTextBlock.DataContext> 
      {Binding Content} 
     </RichTextBlock.DataContext> 
     <FlowDocument> 
      <Paragraph> 
       <!--your content should be here--> 
      </Paragraph> 
     </FlowDocument> 
    </RichTextBlock> 
</ScrollViewer> 

вы можете поместить много параграфов, как йо у пожелает, они просто должны быть внутри FlowDocument, следовательно, вы должны извлечь значение каждого абзаца из item.Content и добавить его в качестве пункта к FlowDocument:

 Paragraph myParagraph = new Paragraph(); 
     myParagraph.Inlines.Add(ParagraphValueFromItemContent); 

     // Add the paragraph to the FlowDocument. 
     myFlowDoc.Blocks.Add(myParagraph); 
Смежные вопросы