Simsons
Simsons

Reputation: 12745

KeyDown event is not working for Arrow keys, Home, End, PageUp, PageDown and other similar keys in silverlight

I want to override the selection behavior of ListBox Items.

We can traverse through ListBox items using Up and Down arrows but I want to traverse the list using Left and Right arrow keys.

While I am trying to add the key down event for ListBox, It shows almost all key presses except for Arrow Keys, Home, End and similar keys.

I have the following code:

private void listArtist_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key.ToString() == "Enter")
    {
        // Go to some page
    }
    else
    {
        MessageBox.Show(e.Key.ToString());
    }
}

I am clueless about this. Please help.

Thanks, Subhen

Upvotes: 1

Views: 5756

Answers (2)

Amsakanna
Amsakanna

Reputation: 12934

Do you mind if i give the idea of handling keyup event instead

http://weblogs.asp.net/jgalloway/archive/2007/07/02/some-keyboard-input-tricks-for-silverlight-1-1-alpha.aspx

Upvotes: 1

Gabe
Gabe

Reputation: 86718

What you need to do is subclass ListBox and override the OnKeyDown function. Maybe something like this:

class MyListBox : ListBox
{
    protected override void OnKeyDown(KeyEventArgs e)
    {
        switch (e.Key)
        {
        case Key.Left:
            // ....
            e.Handled = true;
            break;
        case Key.Right:
            // ....
            e.Handled = true;
            break;
        }

        if (!e.Handled)
            base.OnKeyDown(e);
    }
}

Upvotes: 4

Related Questions