在MSDN网站上,我找到了一个方法,它检查Silverlight RichTextBox用户控件是否为空。
方法:
public bool isRichTextBoxEmpty()
{
TextPointer startPointer = myRichTextBox.ContentStart.GetNextInsertionPosition(LogicalDirection.Forward);
TextPointer endPointer = myRichTextBox.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward);
if (startPointer.CompareTo(endPointer) == 0) {
return true;
}
else {
return false;
}
}
但是,如果RichTextBox实际为空,则会导致Silverlight应用程序崩溃。没有返回TextPointers,因此2个变量用null填充。
我清除RichTextBox所做的是使用一个执行此操作的按钮:
if(!isRichTextBoxEmpty()) {
myRichTextBox.Blocks.Clear();
}
具有该确切功能。因此,如果有文本,它确实有效。如果有非,我得到空引用。这里发生了什么?
在Silverlight 4.0中工作
答案 0 :(得分:1)
您需要至少一个块才能使该方法有效。
我会在方法的开头添加以下行:
if (myRichTextBox.Blocks.Count == 0) return true;
原始形式的方法并不安全,因为它使用
甚至是多余的if (startPointer.CompareTo(endPointer) == 0)
return true;
else
return false;
而不是
return startPointer.CompareTo(endPointer) == 0;
(camelCase方法名称对我来说似乎也很可疑)