【发布时间】:2011-08-12 06:13:48
【问题描述】:
我有一个 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 事件处理程序,但它没有触发。当我用RichTextBox 在键盘焦点上按下键时,我已经在 Snoop 中观看了事件,并且在 Snoop 中没有显示任何触发的事件。我尝试将IsDocumentEnabled 明确设置为True,但这也没有效果。我尝试将RichTextBox 包装在ScrollViewer 中,但这也没有效果。
关于如何将RichTextBox 维护为IsReadOnly=True,但获得RichTextBox 的预期击键行为的任何建议?
【问题讨论】:
-
对于 RichTextBox,您将使用 PreviewKeyDown 事件处理程序,然后检查按下的键。我更喜欢@Meleak 提供的解决方案,但这里有一个如何手动操作的代码示例:gist.github.com/1915136
标签: wpf xaml richtextbox