Accepting keyboard input in Silverlight

I thought I’d tackle one of the most obvious problems with Silverlight today, the lack of a text edit control. So I thought I’d share my first "toe wetting" in this.
First off I created simple Silverlight 1.1 project with a canvas and a TextBlock…
<Canvas x:Name="parentCanvas"
  <TextBlock x:Name="TextBlockEcho" Text="Hello there"></TextBlock>
I find it useful to always create something I can see by default.
Q1. How to accept keyboard input at all?
Well there is a trick to this. First off I used Intellisense in both the XAML and the code behind to create an event for KeyDown on the TextBlock, but I kept getting a (hidden) exception when running the code. After a quick look around the web I discovered that keyboard event can only be attached to the root canvas. I created a quick handler…
 public void EchoKeyDown(object sender, KeyboardEventArgs e)
            int keyCode = (char)e.PlatformKeyCode;
            if (!e.Shift)
                keyCode = keyCode + 32;
            TextBlockEcho.Text += (char)keyCode;
 and I’ve got a very simple text echo. Now to tackle CTRL,SHIFT, Delete, arrow keys, etc, etc…

2 thoughts on “Accepting keyboard input in Silverlight

  1. Unknown March 3, 2008 / 10:12 pm

    public partial class Page : Canvas
    UserControl1 s;
    public void Page_Loaded(object o, EventArgs e)
    // Required to initialize variables
    s = new UserControl1();
    Children.Add(s); —– Not works
    public class UserControl1 : Control
    public UserControl1()
    System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("SilverlightProject5.UserControl1.xaml");
    FrameworkElement fe = this.InitializeFromXaml(new System.IO.StreamReader(s).ReadToEnd());
    Canvas cv = fe.FindName("canvas");
    cv.KeyDown += new KeyboardEventHandler(cv_KeyDown);
    void cv_KeyDown(object sender, KeyboardEventArgs e)

    if keydown event handler is added in usercontrol , chodren.add not works

  2. Paulio March 6, 2008 / 9:02 pm

    What error do you get?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s