当IsReadOnly为true时,RichTextBox忽略击键(Home,End,PgUp,PgDn)

时间:2011-08-11 21:56:33

标签: wpf xaml richtextbox

我有一个WPF RichTextBox控件,除了用户无法编辑文本且插入符号不可见外,我想在各方面表现得像普通RichTextBox。我遇到的问题是,当我将IsReadOnly更改为False时,RichTextBox会停止对击键做出反应。我希望它能正常响应Home,End,PgUp,PgDn,Up,Down等按键。 documentation未提及此行为。

<RichTextBox
    IsReadOnly="True"
    ScrollViewer.VerticalScrollBarVisibility="Visible"
    Width="65" Height="20">
    <FlowDocument>
        <Paragraph>
            Line 1
            Line 2
            Line 3
        </Paragraph>
    </FlowDocument>
</RichTextBox>

我尝试添加OnKeyDown事件处理程序,但它不会触发。我在Snoop中观看了事件,因为我在键盘焦点上使用RichTextBox按键,并且Snoop中没有显示触发事件。我已尝试将IsDocumentEnabled明确设置为True,但这也没有效果。我已经尝试将RichTextBox包裹在ScrollViewer中,但这也没有效果。

有关如何将此RichTextBox维护为IsReadOnly=True,但获得RichTextBox预期的击键行为的任何建议?

1 个答案:

答案 0 :(得分:6)

IsReadOnlyCaretVisible设为True

<RichTextBox IsReadOnly="True"
             IsReadOnlyCaretVisible="True"
             ... />

如果您不希望看到插入符号,请将CaretBrush设置为Transparent

<RichTextBox IsReadOnly="True"
             IsReadOnlyCaretVisible="True"
             CaretBrush="Transparent"
             ... />