检测 WPF RichTextBox/FlowDocument 是否为空的最佳方法是什么?
如果文档中仅存在文本,则以下内容有效。不是如果它包含 UIElement 的
new TextRange(Document.ContentStart, Document.ContentEnd).IsEmpty
最佳答案
您可以比较指针,这不太可靠:
var start = rtb.Document.ContentStart;
var end = rtb.Document.ContentEnd;
int difference = start.GetOffsetToPosition(end);
计算结果为
2
如果 RTB 已加载,并且 4
如果内容已被再次输入和删除。如果 RTB 被完全清除,例如通过
select all -> delete
值将是 0
.在 Silverlight reference on MSDN找到了另一种方法,可以对其进行调整和改进:
public bool IsRichTextBoxEmpty(RichTextBox rtb)
{
if (rtb.Document.Blocks.Count == 0) return true;
TextPointer startPointer = rtb.Document.ContentStart.GetNextInsertionPosition(LogicalDirection.Forward);
TextPointer endPointer = rtb.Document.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward);
return startPointer.CompareTo(endPointer) == 0;
}
关于wpf - 检测 RichTextBox 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825575/