1

这可能是一个长镜头,但我正在为 Silverlight 使用 ComponentOne 的 Spellchecker 控件。我做了一个测试项目,添加了一个纯文本框和一个按钮,添加了对 C1.Silverlight 和 C1.Silverlight.SpellChecker 位的引用,并将字典文件添加到我的项目中。

在代码中,我在 button1 的点击事件中调用了拼写检查器,它运行良好。拼写检查器对话框出现,并且完全按照它应该的方式工作。

由于该测试成功,然后我尝试将其实施到我现有的项目中。因为我使用了完全相同的代码,所以我完全没有任何理由可以确定我没有成功。

这是我用来调用组件的代码:

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.SilverlightC1.Silverlight.Spellchecker被添加到该项目中,并且字典也以相同的方式添加。问题似乎是无论出于何种原因字典都没有加载,因为 spellChecker.Enabled 方法返回主字典是否已加载。如果我称它为MessageBox.Show("SpellChecker Enabled = " + spellChecker.Enabled.ToString());假,即使加载字典的调用在那里(如您所见)。

什么会导致字典无法加载?我是否以某种方式错误地将其添加到我的项目中?

编辑:我怀疑我错误地将字典添加到项目中,因为ComponentOne 参考说明:

如果 C1SpellChecker 找不到拼写字典,它不会抛出任何异常。Enabled 属性将设置为 false,并且组件将无法对任何文本进行拼写检查。

我只是不知道出了什么问题,因为它的添加方式与在测试项目中的添加方式相同(右键单击 project.web->Add->Existing Item)

一如既往,谢谢!

-苏塔

4

2 回答 2

2

您可以将字典作为嵌入式资源添加到 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;
                }
            }
        }
    }
于 2011-03-17T12:24:50.710 回答
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

希望这可以帮助!

于 2011-01-31T12:12:34.167 回答