我可以为WPF应用程序中的所有文本框设置自定义词典吗?

时间:2018-05-07 15:18:09

标签: wpf spell-checking

这是与this one类似的问题,但我希望自被问及后六年内有更好的答案。

我有一个自定义词典,我想在应用程序的所有文本框中使用。我似乎无法将SpellCheck.CustomDictionaries属性设置为样式,就像我可以使用SpellCheck.IsEnabled属性一样,并且我不想将setter添加到每个文本框都是单独的。

在该问题中发布的答案需要连接到您要使用自定义词典的每个窗口的Loaded事件。我们有一个不断增长的大型应用程序,并且不希望为每个窗口添加处理程序,并且依赖开发人员记住在添加新窗口时添加代码。

有没有更好的方法为整个应用程序指定自定义词典?感谢。

1 个答案:

答案 0 :(得分:1)

可能不是你想要的,但我使用这个EventManager.RegisterClassHandler来处理某些类型的特定事件。

前者,我在TextBox的构造函数中注册LoadedEvent es'MainWindow

EventManager.RegisterClassHandler(typeof(TextBox), FrameworkElement.LoadedEvent, new RoutedEventHandler(SetCustomDictionary), true);

并定义RoutedEventHandler:

private void SetCustomDictionary(object sender, RoutedEventArgs e)
{
    var textBox = e.OriginalSource as TextBox;
    if (textBox != null)
    {
        textBox.SpellCheck.IsEnabled = true;

        Uri uri = new Uri("pack://application:,,,/MyCustom.lex");
        if (!textBox.SpellCheck.CustomDictionaries.Contains(uri))
            textBox.SpellCheck.CustomDictionaries.Add(uri);
    }
}