Oplossing voor alt gr probleem in Silverlight Textbox

Ik ben bezig met de ontwikkeling van een Silverlight applicatie en merkte daarbij een probleempje met de textbox.  Deze vangt immers de alt gr + key niet op in Silverlight 2 Beta 2.

Heel vervelend als je een invoerveld wil voor een emailadres, aangezien op een azerty keyboard het @-teken opgeroepen wordt met de toetscombinatie alt gr + 2.

Microsoft erkent dat dit een probleem is in beta 2.

Een tijdelijke oplossing

Een beetje code schrijven kan dit probleem opvangen:

  1. Maak een Key Down eventhandler voor je textbox control
  2. Hou in de code behind een variabele bij om de vorige toetsaanslag in op te slaan
  3. Check in de Key Down eventhandler of de vorige toetsaanslag de alt Gr key was en of de huidige toetsaanslag de 2 toets

In C# code ziet dit er alsvolgt uit:

   1:  public partial class MyUserControl : UserControl
   2:  {
   3:      protected Key _oldKey = Key.Unknown;
   4:   
   5:  // other class code
   6:   
   7:      private void textboxEmail_KeyDown(object sender, KeyEventArgs e)
   8:      {
   9:          if (_oldKey == Key.Alt && e.Key == Key.D2)
  10:              textboxEmail.SelectedText = "@";
  11:   
  12:          _oldKey = e.Key;
  13:      }
  14:   
  15:  // other class code
  16:   
  17:  }

Dit vangt alleen de @ op, maar je kan dit uitbreiden naar andere karakters die slechts beschikbaar zijn via alt gr.