这可能是一个很长的镜头,但我正在使用ComponentOne的Spellchecker控件来实现Silverlight。我做了一个测试项目,添加了一个纯文本框和一个按钮,添加了对C1.Silverlight和C1.Silverlight.SpellChecker位的引用,并将字典文件添加到我的项目中。
在代码中,我在button1的click事件中调出了拼写检查程序,并且它是SPLENDIDLY。拼写检查器对话框显示,并完全按预期工作。
由于该测试成功,我尝试将其实现到我现有的项目中。由于我使用了完全相同的代码,所以我完全没有理由可以确定,但我没有成功。
这是我用来调用组件的代码:
using C1.Silverlight;
using C1.Silverlight.SpellChecker;
using C1.Silverlight.Resources;
public partial class MainPage : UserControl
{
C1SpellChecker spellChecker = new C1SpellChecker();
public MainPage()
{
InitializeComponent();
spellChecker.MainDictionary.LoadAsync("C1Spell_en-US.dct");
}
private void btnSpelling_Click(object sender, RoutedEventArgs e)
{
var dlg = new C1SpellDialog();
spellChecker.CheckControlAsync(txtArticle, false, dlg);
}
对C1.Silverlight
和C1.Silverlight.Spellchecker
的引用也会添加到此项目中,并且字典也以相同的方式添加。问题似乎是因为无论加载字典的原因是什么,因为spellChecker.Enabled方法返回主字典是否已被加载。如果我调用MessageBox.Show("SpellChecker Enabled = " + spellChecker.Enabled.ToString());
它显示为false,即使加载字典的调用存在(如您所见)。
什么会导致字典无法加载?我是否以某种方式错误地将其添加到我的项目中?
编辑:我怀疑我已经错误地将字典添加到项目中,因为ComponentOne reference表示:
如果C1SpellChecker找不到 拼写字典,它不会扔 任何例外。 Enabled属性 将被设置为false和组件 将无法拼写检查任何 文本。
我只是不知道出了什么问题,因为它的添加方式与测试项目中的相同(右键单击了project.web-> Add-> Existing Item)
一如既往,谢谢!
-Sootah
答案 0 :(得分:1)
您可以将字典作为嵌入资源添加到Silverlight应用程序,然后使用以下代码加载它:
public MainPage()
{
InitializeComponent();
// load C1SpellChecker dictionary from embedded resource
var asm = this.GetType().Assembly;
foreach (var res in asm.GetManifestResourceNames())
{
if (res.EndsWith(".dct"))
{
using (var s = asm.GetManifestResourceStream(res))
{
sc.MainDictionary.Load(s);
break;
}
}
}
}
答案 1 :(得分:0)
我认为这篇文章在我们的论坛中也是重复的,但会在这里首先回答。请试试这个:
1)尝试使用浏览器访问.dct文件。如果您看不到它,可能是因为您的Web服务器没有提供该类型的文件。您需要配置Web服务器以允许它。
2)验证您使用的网址是否正确.http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/86955/241328.aspx#241328
3)检查您是否正确设置了所有内容:http://helpcentral.componentone.com/CS/silverlight_161/f/78/p/81924/227790.aspx#227790
希望这有帮助!