Wpf RichTextBox选择。文本不正确

Wpf RichTextBox选择。文本不正确,wpf,text,position,richtextbox,selection,Wpf,Text,Position,Richtextbox,Selection,如果我拖动(从前向后)来选择RichTextBox中的文本,则Selection.text与实际选择相匹配。 但是,如果我拖动(从前向后)来选择同一RichTextBox中的文本,则Selection.text始终是一个空字符串 我需要这些信息的原因是,在重新解析RichTextBox中的文本(这涉及清除所有文本并重新填充)后,我需要将插入符号返回到原始位置 我的目标是获得选择开始的偏移量。我可以用它来得到一个停在那里的字符串,我将用它来替换解析结束时的插入符号 if (String.IsNul

如果我拖动(从前向后)来选择RichTextBox中的文本,则Selection.text与实际选择相匹配。 但是,如果我拖动(从前向后)来选择同一RichTextBox中的文本,则Selection.text始终是一个空字符串

我需要这些信息的原因是,在重新解析RichTextBox中的文本(这涉及清除所有文本并重新填充)后,我需要将插入符号返回到原始位置

我的目标是获得选择开始的偏移量。我可以用它来得到一个停在那里的字符串,我将用它来替换解析结束时的插入符号

if (String.IsNullOrWhiteSpace(Selection.Text))
                restartPosition = activeRun.ContentStart.GetOffsetToPosition(CaretPosition.GetInsertionPosition(LogicalDirection.Forward));
            else
                restartPosition = activeRun.ContentStart.GetOffsetToPosition(Selection.Start);
关键在于“如果”语句。如果没有选择,我可以使用文本指针指示光标所在的位置。但是,如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向失败,那就不是问题了


有没有办法准确地检索所选内容?微软的实现似乎有点缺陷。

因此,它没有被破坏。更改CaretPosition将清除所选内容。这就是正在发生的事情。现在的工作就像冠军一样。

所以一个明显的问题是,我如何避免失败?什么语言和框架?例如:C#,Java,Objective-C。Net、Android、iOS等,在WPF.NET4.0中。另外请注意,这是在RichTextBox的OnPreviewKeyDown事件期间发生的。