示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }
示例#4
0
        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);
            }
        }
示例#6
0
 private void OnDataGridCellPointerPressed(object sender, DataGridCellPointerPressedEventArgs args) =>
 ActivateViewModel();
示例#7
0
 private void DataGrid_CellPointerPressed(object sender, DataGridCellPointerPressedEventArgs e)
 {
     Cell   = e.Cell;
     Column = e.Column as DataGridPropertyTextColumn;
 }