标签:richtextbox wpf xml c formatting
因此,在WPF中,我创建了RichTextBox并实现了能够格式化选定文本(粗体,未划线,字体等)的功能,但是现在我想将所有格式导出为XML文件,因此当我加载它时,加载的文件将以相同的格式给我相同的文本.
我认为最好的方法是,如果我可以找到每个在RTB中有格式设置的地方,然后将其保存为文本范围,但是我不知道RTB是否有一种方法来查找文本的一部分格式化.
这是我所拥有的:
xaml:
<Button Name = "export" Click = "export_Click"/>
<RichTextBox x:Name="RTB"/>
和C#:
private void export_Click(object sender, RoutedEventArgs e){
TextRange range = new TextRange();
//here is where i want to access the formatted areas
//something like: range = RTB.document.getBoldArea();
//and then i could export what i got in the text range to a xml file
}
在此先感谢任何愿意提供帮助的人!
解决方法:
实际上,您可以直接访问XAML内容,该内容本身就是XML.您可以直接保存它,也可以将其操纵/转换为自己的模式.
要获取RichTextBox的XAML:
static string GetXaml(RichTextBox rt)
{
TextRange range = new TextRange(rt.Document.ContentStart, rt.Document.ContentEnd);
MemoryStream stream = new MemoryStream();
range.Save(stream, DataFormats.Xaml);
string xamlText = Encoding.UTF8.GetString(stream.ToArray());
return xamlText;
}
要为RichTextBox设置XAML内容:
static void SetXaml(RichTextBox rt, string xamlString)
{
StringReader stringReader = new StringReader(xamlString);
XmlReader xmlReader = XmlReader.Create(stringReader);
Section sec = XamlReader.Load(xmlReader) as Section;
FlowDocument doc = new FlowDocument();
while (sec.Blocks.Count > 0)
doc.Blocks.Add(sec.Blocks.FirstBlock);
rt.Document = doc;
}
标签:richtextbox,wpf,xml,c,formatting 来源: https://codeday.me/bug/20191112/2023705.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。