这是与this one类似的问题,但我希望自被问及后六年内有更好的答案。
我有一个自定义词典,我想在应用程序的所有文本框中使用。我似乎无法将SpellCheck.CustomDictionaries
属性设置为样式,就像我可以使用SpellCheck.IsEnabled
属性一样,并且我不想将setter添加到每个文本框都是单独的。
在该问题中发布的答案需要连接到您要使用自定义词典的每个窗口的Loaded
事件。我们有一个不断增长的大型应用程序,并且不希望为每个窗口添加处理程序,并且依赖开发人员记住在添加新窗口时添加代码。
有没有更好的方法为整个应用程序指定自定义词典?感谢。
答案 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);
}
}