Solved

show RTF string in silverlight 4

Posted on 2010-08-12
3
1,559 Views
Last Modified: 2013-11-12
i have an RTF string coming from a web service into a silverlight 4 application, RTF example begins like:
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fo......

I want to show this information in a richtextbox or some silverlight control , and i would like the information to look readable like the rendered RTF should be (not looking like above!)

keep in mind silverlight cannot access the system.windows.documents API

if it's not possible then i could consider solutions where the web service code which is ASP.NET fw4 converts the rtf string to xaml?  which i also dont know how to do.

thanks
josh

0
Comment
Question by:joshmiller
  • 2
3 Comments
 
LVL 25

Accepted Solution

by:
apeter earned 500 total points
Comment Utility
0
 

Author Comment

by:joshmiller
Comment Utility
yes, that got me on the right track, thanks...

i ended up making a web service / service ref that uses the code below to return an xaml string.  The xaml string is used by the silverlight app to populate a richtextbox. its sort of a hack, but it works for me.
 note: i did have to change the replace("margin function to work with the default margins for the RTF docs.  In this way my solution is weak, it will break if you have different margins, still it works for my needs.


Private Function RTFtoXAML() As String



        Dim xaml As String = ""

        Dim doc As New FlowDocument()

        Dim range As New TextRange(doc.ContentStart, doc.ContentEnd)



        Using ms As New MemoryStream()

            Using sw As New StreamWriter(ms)

                sw.Write(sw)

                sw.Flush()

                ms.Seek(0, SeekOrigin.Begin)

                range.Load(ms, System.Windows.DataFormats.Rtf)

            End Using

        End Using





        Using ms As New MemoryStream()

            range = New TextRange(doc.ContentStart, doc.ContentEnd)



            range.Save(ms, System.Windows.DataFormats.Xaml)

            ms.Seek(0, SeekOrigin.Begin)

            Using sr As New StreamReader(ms)

                xaml = sr.ReadToEnd()

            End Using

        End Using



        ' remove all attribuites in section and remove attribute margin  



        Dim start As Integer = xaml.IndexOf("<Section")

        Dim [stop] As Integer = xaml.IndexOf(">") + 1



        Dim section As String = xaml.Substring(start, [stop])



        xaml = xaml.Replace(section, "<Section xml:space=""preserve"" HasTrailingParagraphBreakOnPaste=""False"" xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">")

        xaml = xaml.Replace("Margin=""0,0,0,0""", [String].Empty)



        Return xaml



    End Function

Open in new window

0
 

Author Closing Comment

by:joshmiller
Comment Utility
thanks
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now