【问题标题】:KeyDown event is not working for Arrow keys, Home, End, PageUp, PageDown and other similar keys in silverlightKeyDown 事件不适用于 Silverlight 中的箭头键、Home、End、PageUp、PageDown 和其他类似键
【发布时间】:2011-02-01 01:22:34
【问题描述】:

我想覆盖 ListBox Items 的选择行为。

我们可以使用向上和向下箭头遍历列表框项目,但我想使用向左和向右箭头键遍历列表。

当我尝试为 ListBox 添加按键事件时,它显示了几乎所有按键,但箭头键、Home、End 和类似键除外。

我有以下代码:

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());
    }
}

我对此一无所知。请帮忙。

谢谢, 亚亨

【问题讨论】:

    标签: c# silverlight-3.0 listbox


    【解决方案1】:

    您需要做的是继承 ListBox 并覆盖 OnKeyDown 函数。也许是这样的:

    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);
        }
    }
    

    【讨论】:

    • 嗨,Gabe,感谢您的建议。现在我如何在我的页面上实现它。我是否需要创建一个 UserControl,然后将其添加到我的 XAMl。请提出建议。
    • 您不需要用户控件。只需在 XAML 中使用 MyListBox 代替 ListBox
    • @samyi:您的链接不适用于 Silverlight。
    【解决方案2】:
    猜你喜欢
    • 2010-12-06
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多