I have an html page that only contains <p>
, <strong>
, <br />
and <a>
tags. I want to show this content in a XAML TextBlock
in Windows 8. Is there any way to show that content in a TextBlock
without losing the structure (e.g. paragraphs)? I don't want to use WebView
because WebView
can not be transparent.
Asked
Active
Viewed 6,644 times
6

ipman
- 1,212
- 2
- 21
- 29
-
1Can you use a [RichTextBlock](http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.richtextblock)? You'd have to translate the HTML markup into paragraphs, etc. yourself. Except Metro doesn't support inline hyperlinks, though there is a [workaround](http://stackoverflow.com/a/9882353/292432). – arx Jul 15 '12 at 10:28
-
Yes, I can use a RichTextBlock. However, I do not know how to populate a RichTextBlock dynamically. I was using Binding. – ipman Jul 15 '12 at 10:35
-
1[This answer](http://stackoverflow.com/questions/3762150/coloring-text-in-richtextbox-c-sharp/3762469#3762469) creates rich content dynamically. It's actually for Silverlight, but I'd be surprised if the code was much different. – arx Jul 15 '12 at 10:46
2 Answers
10
I am developing a open source Windows 8 Metro RSS Reader app and I used HtmlUtilities.ConvertToText
You can see the source code implementation here http://metrorssreader.codeplex.com/SourceControl/changeset/view/17913#265003

Zubair Ahmed
- 725
- 8
- 15
-
sweet zombie jesus thank you for linking to this. I had no idea this was baked into the frame work and lost a ton of time chasing my tail and getting nowhere! thank you! – SelAromDotNet Apr 11 '13 at 23:03
4
If you want to do it in XAMl, just add a converter.
public sealed class TextToHtmlConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is string)
{
return HtmlUtilities.ConvertToText(value.ToString());
}
else
{
return value;
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
Then in your XAML add a resource reference.
Then Bind with a converter:
Text="{Binding titleFull,Converter={StaticResource TextToHtmlConverter}}"

dotsa
- 911
- 1
- 11
- 15