gpt4 book ai didi

wpf - 替换 RichTextBox 文本但保持格式

转载 作者:行者123 更新时间:2023-12-05 00:39:11 25 4
gpt4 key购买 nike

任何人都可以为我解释一下,我有一个 RichTextBox,我正在将一个 xaml 文件加载到其中。我需要用真实数据替换 RichTxtBox 文本的某些部分,即“[our_name]”替换为“Billie Brags”。我的 xaml 文件包含粗体和字体大小等格式。

当我运行我的代码(如下所示)时,我可以更改文本 OK 但我丢失了格式。

知道如何做到这一点并保持格式吗?

谢谢

            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
using (fs)
{
TextRange RTBText = new TextRange(rtb_wording.Document.ContentStart, rtb_wording.Document.ContentEnd);
RTBText.Load(fs, DataFormats.Xaml);
}



TextRange tr = new TextRange(rtb_wording.Document.ContentStart, rtb_wording.Document.ContentEnd);
string rtbContent = tr.Text;
rtbContent = rtbContent.Replace("<our_name>", "Billie Brags");
System.Windows.MessageBox.Show(rtbContent);

FlowDocument myFlowDoc = new FlowDocument();

// Add paragraphs to the FlowDocument
myFlowDoc.Blocks.Add(new Paragraph(new Run(rtbContent)));
rtb_wording.Document = myFlowDoc;

最佳答案

它的工作原理,这就是我最终做到的,不太漂亮,但它起作用了。 WPF RTB 真的应该像 winforms 那样具有 rtf 属性...

感谢 Kent 让我走上正轨。

            var textRange = new TextRange(rtb_wording.Document.ContentStart, rtb_wording.Document.ContentEnd);
string rtf;
using (var memoryStream = new MemoryStream())
{
textRange.Save(memoryStream, DataFormats.Rtf);
rtf = ASCIIEncoding.Default.GetString(memoryStream.ToArray());
}

rtf = rtf.Replace("<our_name>", "Bob Cratchet");

MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(rtf));
rtb_wording.SelectAll();
rtb_wording.Selection.Load(stream, DataFormats.Rtf);

关于wpf - 替换 RichTextBox 文本但保持格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com