我正在使用 WPFToolKitDataGrid
来显示数据;在我的用例中
- 用户单击一个单元格并输入一个值(我捕获事件并将焦点设置为
TextBox
) - 按 Enter
- 承诺的价值
- 焦点转移到下一个单元格
现在,除非单击单元格,否则用户无法在TextBox
(在)中输入任何值。可以是各种控件(如等)DataGridCell
的一部分。TextBox
NumericUpDown
Calendar
此行为类似于 Excel,但我无法将焦点转移到底层TextBox
,因为其中有各种其他包装用户控件DataGridCell
(类似于DataGridCell
contains MatrixCellContainer
,其中 contains MatrixCell
,其中包含UpDown
Control)
任何指针都会非常有帮助。
更新:
DataGridCell_Selected
我可以通过处理这样的事件来实现我正在寻找的东西:
private void DataGridCell_Selected(object sender, RoutedEventArgs e)
{
Microsoft.Windows.Controls.DataGridCell dataGridCell =
sender as Microsoft.Windows.Controls.DataGridCell;
// ToDo: This is a very bad hack;
// should be replaced by some proper technique
if (dataGridCell != null)
{
NumericUpDownBase<int>[] IntUpDownControls =
dataGridCell.GetChildrenOfType<NumericUpDownBase<int>>();
if (IntUpDownControls.Count() != 0)
{
IntUpDownControls[0].Focus();
//Keyboard.Focus(IntUpDownControls[0]);
}
else
{
NumericUpDownBase<double>[] DblUpDownControls =
dataGridCell.GetChildrenOfType<NumericUpDownBase<Double>>();
if (DblUpDownControls.Count() != 0)
{
DblUpDownControls[0].Focus();
//Keyboard.Focus(DblUpDownControls[0]);
}
}
}
}
但我知道会有更好的方法来实现这一点!