当我将UIElement
插入RichTextBox
时(例如Button
中的BlockUIContainer
)。我总是得到一个InvalidOperationException
说“This TextNavigator No Scoping文本元素“当我编辑richtextbox时(特别是包括UIElements的选择元素)。
例外情况:
System.Windows.Documents.TextPointer.MoveToElementEdge(ElementEdge edge) System.Windows.Documents.TextPointer.System.Windows.Documents.ITextPointer.MoveToElementEdge(ElementEdge edge) System.Windows.Documents.TextPointerBase.GetFollowingNonMergeableInlineContentStart(ITextPointer position) System.Windows.Documents.TextSelection.get_PropertyPosition() System.Windows.Documents.TextSelection.GetCurrentValue(DependencyProperty formattingProperty)
“此TextNavigator”无范围文本元素。
我潜入其中,发现异常被抛出:
internal void MoveToElementEdge(ElementEdge edge)
{
ValidationHelper.VerifyElementEdge(edge, "edge");
this.VerifyNotFrozen();
this._tree.EmptyDeadPositionList();
this.SyncToTreeGeneration();
TextTreeTextElementNode scopingNode = this.GetScopingNode() as TextTreeTextElementNode;
if (scopingNode == null)
{
throw new InvalidOperationException(SR.Get("NoScopingElement", new object[] { "This TextNavigator" }));
}
this.MoveToNode(this._tree, scopingNode, edge);
}
似乎问题与TextTreeTextElementNode有关。但我不能追踪,因为它对我来说太复杂了。我猜UIElement不能被这个“TextTreeTextElementNode”包裹,这会导致返回null。
我曾尝试搜索谷歌,但发现没有任何有价值的信息只是对微软的反馈。