private void SelectionHandler(object sender, DataGridCellPointerPressedEventArgs args) { IDataContextProvider obj = args.Cell.Content as IDataContextProvider; if (obj == null) { return; } var dc = obj.DataContext; if ((obj as INamed).Name != "TagPanel") { if (dc.GetType() == typeof(DirectoryItem)) { switch (args.PointerPressedEventArgs.GetCurrentPoint(null).Properties.PointerUpdateKind) { case (PointerUpdateKind.LeftButtonPressed): SaveLastRowPosition(sender, args); var temp = (DirectoryItem)dc; OpenDirectory(temp); break; case (PointerUpdateKind.RightButtonPressed): (this.DataContext as DirectoryViewModel).LoadBackup((DirectoryItem)dc); break; } } return; } }
private void OnDataGridCellPointerPressed(object sender, DataGridCellPointerPressedEventArgs args) { if (args.PointerPressedEventArgs.ClickCount == 2) { var fileViewModel = (FileViewModel)args.Cell.DataContext; fileViewModel.OpenCommand.Execute(null); } }
private void DGV_CellPointerPressed(object sender, DataGridCellPointerPressedEventArgs e) { const int OutputFileName_Column_DisplayIndex = 0; const int OutputDirectory_Column_DisplayIndex = 1; var pp = e.PointerPressedEventArgs.GetCurrentPoint(null); switch (pp.Properties.PointerUpdateKind) //e.PointerPressedEventArgs.MouseButton ) { case PointerUpdateKind.LeftButtonPressed: //MouseButton.Left: switch (e.Column.DisplayIndex) { case OutputFileName_Column_DisplayIndex: case OutputDirectory_Column_DisplayIndex: { bool is_valid(int _rowIndex, DownloadRow _selectedDownloadRow) => ((0 <= _rowIndex) && (_rowIndex < _Model.RowsCount) && (_Model[_rowIndex] == _selectedDownloadRow)); var selectedDownloadRow = this.GetSelectedDownloadRow(); var rowIndex = e.Row.GetIndex(); if (is_valid(rowIndex, selectedDownloadRow)) { var evnt = (e.Column.DisplayIndex == OutputFileName_Column_DisplayIndex) ? OutputFileNameClick : OutputDirectoryClick; if (evnt != null) { e.PointerPressedEventArgs.Pointer.Capture(null); e.PointerPressedEventArgs.Handled = true; evnt(selectedDownloadRow); //Dispatcher.UIThread.Post( () => evnt( selectedDownloadRow ) ); } } } break; } break; case PointerUpdateKind.RightButtonPressed: //MouseButton.Right: { var evnt = MouseClickRightButton; if (evnt != null) { var row = (e.PointerPressedEventArgs.Source as IControl)?.GetSelfAndVisualAncestors().OfType <DataGridRow>().FirstOrDefault(); if (row != null) { DGV.SelectedIndex = row.GetIndex(); } e.PointerPressedEventArgs.Pointer.Capture(null); e.PointerPressedEventArgs.Handled = true; evnt(pp.Position, this.GetSelectedDownloadRow()); } } break; } }
private void SaveLastRowPosition(object sender, DataGridCellPointerPressedEventArgs args) { var gridBottom = ((TransformedBounds)(sender as DataGrid).TransformedBounds).Clip.Bottom; var cellBottom = ((TransformedBounds)args.Cell.TransformedBounds).Clip.Bottom; var cellHeight = ((TransformedBounds)args.Cell.TransformedBounds).Clip.Height; var percentageOfLastRow = (decimal)((gridBottom - cellBottom) / cellHeight); var numberOfRemainingRows = (int)decimal.Round(percentageOfLastRow, System.MidpointRounding.AwayFromZero); var itemsAsList = (sender as DataGrid).Items.Cast <DirectoryItem>().ToList(); var currentIndex = itemsAsList.IndexOf((args.Cell.Content as IDataContextProvider).DataContext as DirectoryItem); if (currentIndex + numberOfRemainingRows < itemsAsList.Count) { lastObject = itemsAsList[currentIndex + numberOfRemainingRows]; return; } lastObject = itemsAsList.Last(); }
private static void OnCellPointerPressed(object sender, DataGridCellPointerPressedEventArgs e) { if (!(sender is DataGrid target)) { return; } if (e.Row is null) { return; } ICommand command = GetCellPointerPressedCommand(target); if (command?.CanExecute(e.Row.DataContext) ?? false) { command.Execute(e.Row.DataContext); } }
private void OnDataGridCellPointerPressed(object sender, DataGridCellPointerPressedEventArgs args) => ActivateViewModel();
private void DataGrid_CellPointerPressed(object sender, DataGridCellPointerPressedEventArgs e) { Cell = e.Cell; Column = e.Column as DataGridPropertyTextColumn; }