在DataGrid(WPF)中的DataCell旁边显示一个新窗口

nee*_*ebz 1 wpf wpf-controls wpfdatagrid

我想要一个场景,当用户点击WPF中的DataGrid中的单元格时,我想在它旁边打开NumPad(这基本上是基于触摸的输入).NumPad,我理解是一个单独的窗口.

1)如何知道选择哪个Cell
2)如何在单元格旁边显示NumPad?
3)如何找到单元格的坐标来定位我的NumPad?
4)如何根据NumPad条目设置单元格的值?

NumPad是同一应用程序中的WPF用户控件.DataGrid是一个.NET 4控件.这是一个普通的Windows桌面应用程序

geh*_*hho 8

这不是一项微不足道的任务,你应该对WPF有一些了解,但是这里有一些你可能想要的想法:

  1. 该DataGridCell.IsSelected属性会告诉您是否选择了单元格.
  2. 我会用a Popup来直接显示NumPad除了单元格.
  3. 如果使用a Popup,则不需要坐标,但可以使用Popup.Placement属性指定相对位置.另请参阅此MSDN文档:弹出放置行为
  4. 您可以尝试使用NumPad中的绑定到DataGridCell中的用户控件.

使用DataGrid.CellStyle或DataGridColumn.CellStyle属性,您可以为DataGrid的所有单元格或某个特定列指定备用样式.在此样式中,您可以更改模板并添加Popup仅在选择当前单元格时打开的模板.您可以通过将Popup.IsOpen属性绑定到属性来轻松实现此目的DataGridCell.IsSelected.

这只是一个初步的想法.您仍然需要查看提供的MSDN链接,并阅读有关WPF的其他一些内容.虽然可能需要一些时间来学习这种"WPF方式"(即只有XAML),但是(在我看来)它比使用大量代码隐藏来确定当前选择的单元格,将控件定位在正确的位置更容易,将数据从NumPad传输到单元格等等......