如何在DataGrid中获得类似Excel的行为?

我在我的WPF应用程序中使用codeplex中的DataGrid。 我已经定义了一些DatagridTemplateColumns 。 数据素材模板可以包含一个TextBox或一个ComboBox,具体取决于ViewModel中的数据。

用户可以使用箭头键遍历网格元素。 而当用户按下input,它进入下一行。 这些行为是好的。

当用户通过使用箭头键和某些字符(如a,b,c等)的Tab,Enter等之外来到特定单元格时,问题出现了。我希望TextBox或ComboBox接收焦点并进入编辑模式自动。

我已经在DataGridCell样式中设置了IsTabStop false。 所以当我从一个单元格按Tab键时,它会自动进入下一个单元格的TextBox或ComboBox。 但是同样的方向键不会发生!

我不知道该怎么做?

要使单元格自动进入编辑模式,您可以在单元格中捕获预览鼠标左键,并在事件处理函数中设置单元格的焦点并将其选中。

您可以将事件注册到datagrid单元格,

<Style TargetType="{x:Type datagrid:DataGridCell}" x:Key="cellStyle"> <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown" /> 

然后在处理程序中,您可以检查键盘修饰符,以便您可以避免情况下,如CTRL +单击和东西,如果你想。