从处理输入密钥防止Silverlight DataGrid

时间:2011-09-15 15:17:55

标签: silverlight xaml datagrid

我在Silverlight应用程序中有一个数据网格。单击第一行,然后按Enter键使选择移动到下一行。我不想要这种行为 - 在此屏幕上,Enter键用于完全不同的目的。

我意识到这是编辑框架的一部分,但我需要一种方法来关闭它。我尝试将IsReadOnly设置为True(即使控件在技术上不是只读的)并且没有任何效果。

我附加了datagrid KeyDown事件,但是在按下Enter键时没有调用它。它适用于其他键。

我很难过。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

是的,这很烦人。

据我所知,唯一的选择是创建自己的继承自DataGrid的控件,并在将事件传递给基础之前执行所需的操作。

public class NewDataGrid : DataGrid 
{     
    protected override void OnKeyDown(KeyEventArgs e)     
    {         
        if (e.Key == Key.Enter)         
        {
            //do what is needed here             
            e.Handled = true;         
        }         
        base.OnKeyDown(e);     
    } 
}