Silverlight RichtextBox内容开始和;满足

时间:2011-06-12 22:10:16

标签: silverlight

在MSDN网站上,我找到了一个方法,它检查Silverlight RichTextBox用户控件是否为空。

链接:http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextbox.contentstart%28v=vs.95%29.aspx

方法:

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中工作

1 个答案:

答案 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方法名称对我来说似乎也很可疑)