【发布时间】:2013-01-28 05:13:24
【问题描述】:
有人在 WPF 4.0 中使用过自定义字典吗? 我在让自定义词典在我的 WPF 项目中工作时遇到问题。 我一直在尝试遵循 msdn 提供的示例,但没有取得任何进展。
http://msdn.microsoft.com/en-us/library/system.windows.controls.spellcheck.customdictionaries.aspx
glossary.Definition.SpellCheck.IsEnabled = true;
Uri uri = new Uri(@"pack://application:,,,/Prog.Proj;component/dictionary.lex");
glossary.Definition.SpellCheck.CustomDictionaries.Add(uri);
由于我的工作性质,子文件夹已重命名。
我的 .lex 文件被设置为资源文件。
编辑
只有在页面加载后在单独的按钮事件中设置它时,我才能让它工作。似乎有什么东西阻止了 CustomDictionariesSources 的“拼写”属性加载,直到回发之后?如果有人对此有所了解,请发表您的见解。
最终编辑
我想要的文本框在一个网格中,该网格有一个启用的禁用标志,该标志设置在代码的深处。下面评论的另一个链接谈到了这一点。面临的另一个问题是我的页面由部分呈现,具体取决于用户选择。为了创建一致的行为,每次加载/重新加载我的文本框时,我都会将拼写检查作为最后一步加载。
我创建了一个上下文菜单扩展,以允许用户接受建议或添加到自定义词典。然后我根据当前用户将我的自定义词典提交到注册表中。我发现这个方向非常用户友好且易于实施。要检索项目,我需要创建一个临时文件,为该文件打包 uri,然后在加载自定义字典后删除该文件。
如果这有助于您实施自定义拼写检查,或者如果您有任何疑问,请告诉我!
【问题讨论】:
-
如果您的
.lex文件设置为嵌入式资源,为什么要使用文件路径来访问它?尝试改用pack:URI。 -
我也试过了。如果您有如何执行此操作的有效示例,请告诉我。
-
在您的原始问题中,您链接到的文章底部有一个 Pack URI 的工作示例。
-
我真的不能很好地解释自己。我试过那个。它对我不起作用。我什至在后面的代码中使用了一个帮助类来排除以错误方式打包 URI 的任何问题。由于某种原因,原始示例对我不起作用。我现在正在重新访问 xaml 版本,但仍然一无所获。然而,我收到一条消息说我的 sys:Uri 没有默认构造函数。
-
确实,我在理解这个问题时遇到了一些麻烦。请在问题中添加一些其他详细信息,例如,究竟是什么不起作用、错误消息、异常等。
标签: c# wpf spell-checking