WPF RichTextBoxを使用して、フロードキュメントをbyte[]としてデータベースに保存しました。次に、このデータを取得して、レポートRichTextBoxにrtfとして表示する必要があります。TextRangeまたはXAMLReaderを使用してbyte[]を変換しようとすると、FlowDocumentが返されますが、レポートRichTextBoxはrtfのみを取得するため、rtf文字列に変換するにはどうすればよいですか。
ありがとう
アービンド
WPF RichTextBoxを使用して、フロードキュメントをbyte[]としてデータベースに保存しました。次に、このデータを取得して、レポートRichTextBoxにrtfとして表示する必要があります。TextRangeまたはXAMLReaderを使用してbyte[]を変換しようとすると、FlowDocumentが返されますが、レポートRichTextBoxはrtfのみを取得するため、rtf文字列に変換するにはどうすればよいですか。
ありがとう
アービンド
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選択ステートメントを使用する必要があります...それ以外は、これです...