WPF:在只读文本框上使用拼写检查
Posted
技术标签:
【中文标题】WPF:在只读文本框上使用拼写检查【英文标题】:WPF: Use SpellCheck On Read-Only TextBox 【发布时间】:2010-11-11 07:10:51 【问题描述】:我希望在单词拼写错误的地方显示带有波浪形红线的文本,但我只希望文本是可选择的,而不是可编辑的。如果我将 TextBox 的 IsReadOnly 属性设置为 True 或 IsEnabled 设置为 False,波浪形的红线就会消失,我无法通过放置透明的东西来绕过它,因为这会阻止用户选择文本的各个部分。
无论如何我可以保留红线,允许文本可选择但防止实际文本被修改?
谢谢
【问题讨论】:
【参考方案1】:您可以连接到文本框的文本更改事件,然后拒绝新文本。它将具有与只读相同的效果,而不会使文本框变灰或摆脱拼写检查。
【讨论】:
【参考方案2】:谢谢大卫。我目前正在研究 2 种可能的解决方案,您的解决方案和以下解决方案:
我创建了一个基于标准 TextBox 的自定义控件,但在这个庄园中实际上有 2 个文本框彼此叠放:
<TextBox Name="tbxBack"
Foreground="Transparent"
SpellCheck.IsEnabled="True"
TextWrapping="Wrap"
SnapsToDevicePixels="True"/>
<TextBox Name="tbxFront"
Background="Transparent"
TextWrapping="Wrap"
SnapsToDevicePixels="True"
IsReadOnly="True"/>
我认为这里发生的事情非常简单,但我担心这会导致潜在的开销。
我正在研究双 TextBox 解决方案的原因是我担心如果我尝试取消该事件,它可能会在文本更改时在控件中出现某种闪烁。
【讨论】:
以上是关于WPF:在只读文本框上使用拼写检查的主要内容,如果未能解决你的问题,请参考以下文章
WPF RichTextBox 拼写检查 ComException