我的部分我的文本框有问题。我已经对它们启用了拼写检查,当一个单词拼写错误时,它会被强调为红色,右键单击会让我选择替换单词。这一切都很好,正如预期的那样。
我遇到的麻烦是,当我选择一个替换词时,而不是纠正我的文本,整个文本块都会突出显示,而且这个词保持不变。
在我的所有文本框中都没有发生这种情况,奇怪的是,如果它是拼写错误的句子中的第一个单词,那么拼写检查工具会按预期正常工作并正确替换该单词。
<TextBox x:Name="TxtBugDescription" Grid.Row="3" Grid.Column="1" TextWrapping="Wrap" Padding="3" SpellCheck.IsEnabled="True" Margin="5" VerticalAlignment="Stretch" AcceptsReturn="True" />
有关如何解决此问题的任何想法?
答案 0 :(得分:0)
我们也遇到了这个问题!感谢Spellcheck only replaces first word in TextBox,我们终于明白了。
我们在App.xaml.cs中有这个代码,只要它得到焦点,它就会突出显示(选择)文本框中的所有文本。这似乎是放弃拼写检查的东西。
//In the App.xaml.cs file
EventManager.RegisterClassHandler(typeof(TextBox), UIElement.GotKeyboardFocusEvent,
new RoutedEventHandler(SelectAllText));
private static void SelectAllText(object sender, RoutedEventArgs e)
{
var tb = (sender as TextBox);
if (tb != null)
tb.SelectAll();
}
我们决定使用此代码的主要用例是在表格中进行选项卡,因此我们将其更改为仅发生在选项卡上,该选项卡允许拼写检查仍然有效。
//Changed the method to only set focus when the tab was pressed
private static void SelectAllText(object sender, RoutedEventArgs e)
{
if (e.RoutedEvent == Keyboard.GotKeyboardFocusEvent)
{
if (!Keyboard.IsKeyDown(Key.Tab))
return;
}
var tb = (sender as TextBox);
if (tb != null)
tb.SelectAll();
}
其他人可能只想删除它。