Это не тривиальная задача, и вы должны иметь некоторые знания о WPF, чтобы выполнить это, но вот несколько идей, которые вы можете искать:
-
DataGridCell.IsSelected
свойство сообщает, выбрана ли ячейка. - Я бы использовал
Popup
, чтобы отобразить NumPad непосредственно рядом с ячейкой. - Если вы используете
Popup
, вам не нужны координаты, но вы можете указать относительное размещение, используя свойство Popup.Placement
.См. Также этот документ MSDN: Поведение размещения всплывающих окон - Можно попробовать использовать привязку из NumPad к пользовательскому элементу управления в DataGridCell.
ИспользованиеDataGrid.CellStyle
или свойство DataGridColumn.CellStyle
, вы можете указать альтернативный стиль для всех ячеек DataGrid или некоторого определенного столбца.В этом стиле вы можете изменить шаблон и добавить Popup
, который открывается, только если выбрана текущая ячейка.Этого легко добиться, связав свойство Popup.IsOpen
со свойством DataGridCell.IsSelected
.
Это только первоначальная идея.Вам все равно придется взглянуть на предоставленные ссылки MSDN, а также прочитать некоторые другие материалы о WPF.Хотя для изучения этого «пути WPF» (т. Е. Только XAML) может потребоваться некоторое время, на мой взгляд, это гораздо проще, чем использовать большое количество кода для определения текущей выбранной ячейки, расположив элемент управления в правильном месте,передача данных из NumPad в ячейку и т. д. ...