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

我可以为WPF应用程序中的所有文本框设置自定义词典吗?,wpf,spell-checking,Wpf,Spell Checking,这是一个与之类似的问题,但我希望在提出这一问题后的六年里,会出现一个更好的答案 我有一个自定义词典,我想在应用程序的所有文本框中使用它。我似乎无法设置拼写检查.CustomDictionaries属性的样式,就像我可以设置拼写检查.IsEnabled属性一样,我不想将setter单独添加到每个文本框中 该问题中的答案要求连接到每个要使用自定义词典的窗口的Loaded事件。我们有一个一直在增长的大型应用程序,不希望必须为每个窗口添加处理程序,也不希望依赖开发人员在添加新窗口时记住添加代码 有没有更

这是一个与之类似的问题,但我希望在提出这一问题后的六年里,会出现一个更好的答案

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

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


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

可能不是您想要的,但我用它来处理所有特定类型的特定事件

例如,我在这里注册到
main window
的构造函数中的所有
TextBox
es'
LoadedEvent

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);
    }
}

谢谢你的回复,但是我无法让这个代码工作。我没有收到任何错误,但文本框都显示我的自定义词典中的单词为打字错误。另外,我是否正确地认为我需要在应用程序的每个窗口中执行此操作?如果是这样,它基本上与我链接的帖子中的代码相同。我希望有一种方法可以设置一次,并将其应用于整个应用程序。如果我弄错了,请解释一下。再次感谢。我还没有试过,但是如果你把它放在应用程序级别上一次,你就可以应用到所有的窗口。我确实查看了你发布的代码,只是用
EventManager.RegisterClassHandler
方法重新应用了它(希望以更少的编写量使其工作)。正如我所说,我实际上根本无法让代码工作,所以我不知道它是否在应用程序级别工作