How do I develop Silverlight applications that manage lexicons?

Last reviewed: 1/14/2012

HOW Article ID: H071117

The information in this article applies to:

  • LexiconKit 4

Summary

You can develop Silverlight applications that manage lexicons using your favorite Silverlight development tools such as Microsoft Visual csharp .NET and Microsoft Visual Basic .NET.

More Information

To access the LexiconKit Silverlight classes within your application, add them to your project References:

  1. Within your Silverlight project, right click on the References folder in csharp or Open MyProject in VB and select the References tab.
  2. For Silverlight V4 applications, add references to the LexiconKit Silverlight assemblies:
    1. Program Files\Chant\LexiconKit 4\Win32\Silverlight\libv4\Chant.LexiconKit.Silverlight.dll and
    2. Program Files\Chant\LexiconKit 4\Win32\Silverlight\libv4\Chant.Shared.Silverlight.dll.
  3. For Silverlight V5 applications, add references to the LexiconKit Silverlight assemblies:
    1. Program Files\Chant\LexiconKit 4\Win32\Silverlight\libv5\Chant.LexiconKit.Silverlight.dll and
    2. Program Files\Chant\LexiconKit 4\Win32\Silverlight\libv5\Chant.Shared.Silverlight.dll.
  1. Within your Silverlight project, right click on the References folder in csharp or Open MyProject in VB and select the References tab.
  2. For Silverlight V5 applications, add references to the GrammarKit Silverlight assemblies:
    1. Program Files\Chant\LexiconKit 4\Win64\Silverlight\libv5\Chant.LexiconKit.Silverlight.dll and
    2. Program Files\Chant\LexiconKit 4\Win64\Silverlight\libv5\Chant.Shared.Silverlight.dll.

To access the LexiconKit Silverlight classes within your application, add references to the LexiconKit assemblies in your code:


using System;
...
using Chant.LexiconKit.Silverlight;
using Chant.Shared.Silverlight;

Imports Chant.LexiconKit.Silverlight
Imports Chant.Shared.Silverlight
Class MainWindow
...

Out-of-Browser Settings

To run your Silverlight app out-of-browser, set the properties as follows:

  1. Within your Silverlight project, select the Silverlight tab under project properties.
  2. Select the checkbox: Enable application running out of the browser.
  3. Deselect the checkbox: Require elevated trust when running in-browser.
  4. Press the Out-of-Browser Settings... button.
  5. Select the checkbox: Required elevated trust when running outside the browser.

In-Browser Settings

To run your Silverlight app in-browser, set the properties as follows:

  1. Within your Silverlight project, select the Silverlight tab under project properties.
  2. Select the checkbox: Require elevated trust when running in-browser.
  3. Deselect the checkbox: Enable application running out of the browser.
  4. Select the Signing tab under project properties.
  5. Select the checkbox: Sign the Xap File.
  6. Press one of the three buttons to select a signing certificate:
    1. Select from Store... if you have installed a signing certificate on your system;
    2. Select from File... if you have a signing certificate file your system; or
    3. Create test certificate... if you do not have signing certificate on your system.
  7. Press the More Details... button to ensure you have installed Trusted Root and Publisher certificiates:
    1. Press the Install Certificate... button;
    2. Select Automatically ... option if you have Certificate installed in your store or Select Place ... option if you created a temp certificate for testing and press the Browse button;
    3. Select Trusted Root Certification Authorities and press the OK button; and
    4. Press the Next button.
    5. Repeat the process by Pressing the Install Certificate... button;
    6. Select Place ... option and press the Browse button;
    7. Select Trusted Publishers and press the OK button; and
    8. Press the Next button.
  8. Run regedit to add a Silverlight registery property AllowElevatedTrustAppsInBrowser with value of 1:
    1. Select the Start menu and enter regedit to launch the Registry Editor;
    2. For Win32 systems, navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\;
    3. For Win64 systems, navigate to HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Silverlight\;
    4. Right click and select New->DWORD (32-bit) Value;
    5. Set the value name to AllowElevatedTrustAppsInBrowser;
    6. Set th value data to 1;
    7. Press the OK button; and
    8. Close the Registry Editor.

Object Instantiation

Declare a global variable for the ChantLM class, instantiate an instance, add the event handler, and set the license and serial properties.


private Chant.LexiconKit.Silverlight.NChantLM NChantLM1;
public MainPage()
{
    InitializeComponent();
    // Instantiate NChantLM object
    NChantLM1 = new NChantLM(this);
    // Setup event callback handler
    NChantLM1.HasEvent += new Chant.LexiconKit.Silverlight.NChantLM.HasEventHandler(this.NChantLM1_HasEvent);
    // Set license properties
    NChantLM1.SetStringProperty(ChantStringProperty.CSPLicense, "LicenseRegistrationNumber");
    NChantLM1.SetStringProperty(ChantStringProperty.CSPSerials, "LicenseSerialNumber");
}

Dim WithEvents NChantLM1 As NChantLM

Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    NChantLM1 = New NChantLM(Me)

    ' Set license properties
    NChantLM1.SetStringProperty(ChantStringProperty.CSPLicense, "ProductRegistrationNumber")
    NChantLM1.SetStringProperty(ChantStringProperty.CSPSerials, "LicenseSerialNumber")

    ...

End Sub

Event Callbacks

Event callbacks are the mechanism in which the component library sends information back to the application such as phoneme selection, import/export processing state, or there was an error.


private void NChantLM1_HasEvent(object sender, HasEventArgs e)
{
    // Get the number of events
    int numberOfEvents = NChantLM1.GetResourceCount(ChantSpeechResource.CSREvent, 0, 0);
    for (int i = 0; i < numberOfEvents; i++)
    {
        // Get the event from the event queue
        NChantLMEvent nChantLMEvent = NChantLM1.GetChantLMEvent(0);
        switch (nChantLMEvent.ChantCallback)
        {
            case ChantCallback.CCTTSPhoneme:
                {
                    ...
                    break;
                }
            default:
                break;
        }
        // Remove the event from the event queue
        NChantLM1.RemoveResource(ChantSpeechResource.CSREvent, 0, 0, "");
    }
}

Private Sub NChantLM1_HasEvent(ByVal sender As System.Object, ByVal e As HasEventArgs) Handles NChantLM1.HasEvent
    Dim I As Integer
    Dim numberOfEvents As Integer
    Dim nChantLMEvent As NChantLMEvent
    ' Get the number of events
    numberOfEvents = NChantLM1.GetResourceCount(ChantSpeechResource.CSREvent, 0, 0)
    For I = 0 To numberOfEvents - 1
        ' Get the event from the event queue
        nChantLMEvent = NChantLM1.GetChantLMEvent(0)
        Select Case nChantLMEvent.ChantCallback
            Case ChantCallback.CCTTSPhoneme
                ...
        End Select
        ' Remove the event from the event queue
        NChantLM1.RemoveResource(ChantSpeechResource.CSREvent, 0, 0, "")
    Next
End Sub

Deployment Checklist

When you are ready to deploy your application, you need to ensure you have a valid license, bundle the correct Chant component libraries, and configure your installation properly on the target system. Review the following checklist before deploying your applications:

  • You may deploy your Silverlight application to any system with a valid license from the Chant.
  • Copy Chant.LexiconKit.Silverlight.dll and Chant.Shared.Silverlight.dll libraries to the target system or merge them with your application using an obfuscator like .NET Reactor by Eziriz.
  • Copy NLexiconKit.dll to the target system.
  • Register NLexiconKit.dll as a COM library on the target system.
  • You may deploy your Silverlight application to any system with a valid license from the Chant.
  • Copy Chant.LexiconKit.Silverlight.dll and Chant.Shared.Silverlight.dll libraries to the target system or merge them with your application using an obfuscator like .NET Reactor by Eziriz.
  • Copy NLexiconKitX64.dll to the target system.
  • Register NLexiconKitX64.dll as a COM library on the target system.

Sample Projects

Silverlight sample projects are installed at the following location:

  • My Documents\Chant LexiconKit 4\Win32\Silveright\VS 2010\CSharp and
  • My Documents\Chant LexiconKit 4\Win32\Silveright\VS 2010\Visual Basic.
  • My Documents\Chant LexiconKit 4\Win64\Silveright\VS 2010\CSharp and
  • My Documents\Chant LexiconKit 4\Win64\Silveright\VS 2010\Visual Basic.