我有RichTextBox,其内容定义如下:
<FlowDocument>
<Paragraph x:Name="para">
<Label Padding="0,0,0,0" Margin="0,0,0,0">
<Hyperlink Click="Hyperlink_Click">
<Run Text="{Binding Txt}" x:Name="rxm" />
</Hyperlink>
</Label>
<Label Padding="0,0,0,0" Margin="0,0,0,0" FontWeight="Bold" Content=" - " />
<Label Padding="0,0,0,0" Margin="0,0,0,0" FontWeight="Bold" x:Name="name" Content="Some name"
ToolTipService.ShowDuration="10000">
<Label.ToolTip>
<ContentControl Content="Tooltip" />
</Label.ToolTip>
</Label>
</Paragraph>
</FlowDocument>
问题在于我无法正确获取所选文字。我得到的空格很少。所以我试图至少用以下代码检索所有FlowDocument的文本:
TextRange tr = new TextRange(
doc.Selection.Start,
doc.Selection.End);
MemoryStream ms = new MemoryStream();
tr.Save(ms, DataFormats.Xaml);
string xamlString =
ASCIIEncoding.Default.GetString(ms.ToArray());
事实证明,我每次只有少量空白区域:
<Section xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ... <Paragraph>
<Run> </Run>
<Run> </Run>
<Run> </Run>
<Run> </Run>
<Run> </Run>
</Paragraph>
看起来像&#34;文件&#34;视图与视觉视图完全不同,虽然我不知道为什么这些视图是空的。有没有人知道如何正确获取所选文本(即使没有任何格式)?任何帮助表示赞赏
答案 0 :(得分:0)
我找到了合适的解决方案:
How can I copy WPF FlowDocument InlineUIContainer contents?
Determining the selected InlineUIContainer in a WPF RichTextBox
处理所有可能的FlowDocument内容需要相当多的编码,但我现在很满意