문제

데이터베이스에서 WPF RichTextBox를 사용하여 FlowDocument를 바이트 []로 저장했습니다. 이제이 데이터를 검색하고 RichTextBox 보고서에 RTF로 표시해야합니다. TexTrange 또는 XamlReader를 사용하여 바이트 []를 변환하려고 할 때 FlowDocument를 다시 얻지 만 RichTextBox가 RTF 만 사용하기 때문에 RTF 문자열로 어떻게 변환합니까?

감사

Arvind

도움이 되었습니까?

해결책

실제 문서 컨텐츠가 아니라 문서의 런타임 표현으로 간주되어야하므로 FlowDocument를 직접 유지해서는 안됩니다. 대신 사용하십시오 Textrange 클래스 포함 된 다양한 형식으로 저장하고로드합니다 RTF.

선택을 생성하고 스트림에 저장하는 방법에 대한 빠른 샘플 :

var content = new TextRange(doc.ContentStart, doc.ContentEnd);

if (content.CanSave(DataFormats.Rtf))
{
    using (var stream = new MemoryStream())
    {
        content.Save(stream, DataFormats.Rtf);
    }
}

컨텐츠를 선택에로드하는 것은 비슷합니다.

var content = new TextRange(doc.ContentStart, doc.ContentEnd);

if (content.CanLoad(DataFormats.Rtf))
{
    content.Load(stream, DataFormats.Rtf);
}

다른 팁

이것은 나를위한 매력처럼 작동합니다. 어려움없이 RTF 상자에 결과를 표시합니다.

public static string getDocumentAsXaml(IDocumentPaginatorSource flowDocument)
{
     return XamlWriter.Save(flowDocument);
}
    Using conn As New System.Data.SqlClient.SqlConnection(connectionSTRING)
       Dim adapter As New System.Data.SqlClient.SqlDataAdapter(selectSTRING, conn)
       Dim DS As System.Data.DataSet = New System.Data.DataSet
       adapter.Fill(DS)

       Dim ba() As Byte = Text.Encoding.ASCII.GetBytes(DS.Tables(0).Rows(0)("RTF_Field").ToString())

       Dim ms As MemoryStream = New MemoryStream(ba)
       Dim fd As FlowDocument = New FlowDocument
       Dim tr As TextRange = New TextRange(fd.ContentStart, fd.ContentEnd)
       tr.Load(ms, System.Windows.DataFormats.Rtf)
       ms.Close()

            RichTextBox.Document = fd

        End Using

연결 문자열 및 SQL Select 문을 사용해야합니다 ... 그 외에는 이것이 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top