سؤال

ولقد استخدمت WPF RichTextBox لحفظ flowdocument من أنها بايت [] في قاعدة البيانات. الان انا بحاجة الى استرداد هذه البيانات وعرضها في RichTextBox التقرير بمثابة الخانات. عندما أحاول تحويل بايت [] باستخدام TextRange أو في XAMLReader أحصل على FlowDocument مرة أخرى ولكن كيف يمكنني تحويله إلى سلسلة الخانات مثل RichTextBox تقرير يستغرق سوى الخانات.

والشكر

وأرفيند

هل كانت مفيدة؟

المحلول

ويجب أن لا تستمر FlowDocument مباشرة كما ينبغي النظر في تمثيل وقت التشغيل من الوثيقة، وليس محتوى المستند الفعلي. بدلا من ذلك، استخدم الطبقة TextRange لحفظ وتحميل لأشكال مختلفة بما في ذلك < وأ href = "http://msdn.microsoft.com/en-us/library/system.windows.dataformats.rtf.aspx" يختلط = "noreferrer"> رتف .

وعينة سريعة على كيفية إنشاء مجموعة وحفظ لتيار:

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 بيان ... غير ذلك، وهذا هو عليه ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top