Exemple #1
0
        /// <summary>
        /// dgHour控件 单元格点击(选择)事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgHour_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGridCellInfo cell = dgHour.CurrentCell;

            if (cell.Column == null)
            {
                return;
            }

            Hour hour = cell.Item as Hour;

            // string str = cell.Column.DisplayIndex.ToString();

            string str1 = string.Empty;;

            switch (cell.Column.DisplayIndex)// 通过所在列 获取类Hour的坐标 确定具体的hour数据
            {
            case 0:
                str1 = hour.Hour1.ToString();
                break;

            case 1:
                str1 = hour.Hour2.ToString();
                break;

            case 2:
                str1 = hour.Hour3.ToString();
                break;

            case 3:
                str1 = hour.Hour4.ToString();
                break;

            case 4:
                str1 = hour.Hour5.ToString();
                break;

            case 5:
                str1 = hour.Hour6.ToString();
                break;

            default: break;
            }

            str1 = str1.PadLeft(2, '0');
            OnHourClickContentEdit(str1);
        }
Exemple #2
0
        private void grdTreasuryDetails_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            try
            {
                if (grdTreasuryDetails.SelectedValue == null)
                {
                    return;
                }

                this.ClearForm();
                TreasuryDetailId = (grdTreasuryDetails.SelectedValue as dynamic).ID;
                var treasuryDetail = Business.GetTreasuryDetailBusiness().GetById(TreasuryDetailId);
                cmb_noe_daryaft.SelectedValue = treasuryDetail.TDType;
                if (treasuryDetail.TDType == Common.Constants.TreasuryDetailType.Cash)
                {
                    txtCashDescription.Text = treasuryDetail.TDDescription;
                }
                else
                {
                    txtChequeDescription.Text = treasuryDetail.TDDescription;
                }

                cmb_noe_daryaft_SelectionChanged();

                if (treasuryDetail.IDFund.HasValue)
                {
                    var fund = Business.GetFundsBusiness().GetById(treasuryDetail.IDFund.ToGUID());
                    txtRecivePlace.Text = string.Format("{0}{1}{2}", fund.FAccountnumber, Localize.Cheque_Fund_Seperator, fund.FName);
                    txtPrice.Text       = fund.Fprice.ToString(Localize.DoubleMaskType);
                }
                else
                {
                    var cheque = Business.GetChequeBusiness().GetById(treasuryDetail.IDCheck.ToGUID());
                    var bank   = Business.GetFundsBusiness().GetById(cheque.CBank.ToGUID());

                    txtNumCheque.Text      = cheque.CNO;
                    txtBankName.Text       = bank.FName;
                    txtBankBranchCode.Text = bank.Fbranch;
                    dtpChequeDate.Text     = cheque.CDate;
                    txtChequePrice.Text    = cheque.CPrice.ToString(Localize.DoubleMaskType);
                }
            }
            catch
            {
                throw;
            }
        }
        private void dataGrid1_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            try
            {
                DataRowView _DataView = dataGrid1.CurrentCell.Item as DataRowView;

                if (_DataView != null)
                {
                    sel_id_idshobe = _DataView.Row[0].ToString();
                    sel_id_idmen   = _DataView.Row[3].ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemple #4
0
        private void dataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            var fighter = dataGrid.SelectedItem as Fighter;

            var matchesOfSelectedFighter1 =
                matches
                .Where(m => m.Fighter1 == fighter)
                .Select(m => new { Opponent = m.Fighter2, Rating = (int)m.Fighter2.EloRating, Result = m.Result, Year = m.Year });

            var matchesOfSelectedFighter2 =
                matches
                .Where(m => m.Fighter2 == fighter)
                .Select(m => new { Opponent = m.Fighter1, Rating = (int)m.Fighter1.EloRating, Result = MatchWithoutId.InvertMatchResult(m.Result), Year = m.Year });


            dataGrid1.ItemsSource = matchesOfSelectedFighter1.Concat(matchesOfSelectedFighter2).ToList();
        }
        private void StudentsDataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            int SelectedRowsNumber = StudentsDataGrid.SelectedCells.Count / StudentsDataGrid.Columns.Count;

            string Ending;

            if (SelectedRowsNumber == 1)
            {
                Ending = "a.";
            }
            else
            {
                Ending = "ów.";
            }

            SelectedCounterLabel.Content = "Wybrałeś " + SelectedRowsNumber + " student" + Ending;
        }
 private void tabelaEtikete_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     if (tabelaEtikete.SelectedItems.Count > 1)
     {
         Edit_btn.IsEnabled = false;
     }
     else if (tabelaEtikete.SelectedItems.Count == 0)
     {
         Edit_btn.IsEnabled = false;
         Del_btn.IsEnabled  = false;
     }
     else
     {
         Edit_btn.IsEnabled = true;
         Del_btn.IsEnabled  = true;
     }
 }
 private void DgvDatos_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     if (dgvDatos.Items.Count > 0 && dgvDatos.SelectedItem != null)
     {
         try
         {
             DataRowView dataRow = (DataRowView)dgvDatos.SelectedItem;
             int         id      = int.Parse(dataRow.Row.ItemArray[0].ToString());
             ids = id;
             btnDel.IsEnabled = true;
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
     }
 }
Exemple #8
0
        private void traderList2_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            var trader2 = traderList2.SelectedItem as Unit;

            if (trader2 != null)
            {
                Selected2 = trader2;
                itemsList2.ItemsSource        = Selected2.Inventory;
                givenCoins2.HideUpDownButtons = false;
                statThrow2.IsEnabled          = true;
                Update();
            }
            else
            {
                givenCoins2.HideUpDownButtons = true;
            }
        }
        private void selectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGrid    gd           = (DataGrid)sender;
            DataRowView row_selected = gd.SelectedItem as DataRowView;

            if (row_selected != null)
            {
                NewMemberFNameTxt.Text       = row_selected["firstname"].ToString();
                NewMemberLNameTxt.Text       = row_selected["lastname"].ToString();
                NewMemberEmailTxt.Text       = row_selected["email"].ToString();
                NewMemberPhoneNumberTxt.Text = row_selected["phonenum"].ToString();
                NewMemberNICTxt.Text         = row_selected["nic"].ToString();
                NewMemberInstructorID.Text   = row_selected["instruc_id"].ToString();
                NewMemberInstructorName.Text = row_selected["instruc_name"].ToString();
            }
            idNum = row_selected["id"].ToString();
        }
Exemple #10
0
        private void TestGrid_OnSelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGrid dataGrid = sender as DataGrid;

            if (dataGrid == null)
            {
                return;
            }
            DataGridCellInfo selectedCell = dataGrid.CurrentCell;
            CheckBox         cellContent  = selectedCell.Column.GetCellContent(selectedCell.Item) as CheckBox;

            if (cellContent == null)
            {
                return;
            }
            cellContent.IsChecked = !cellContent.IsChecked;
        }
Exemple #11
0
        /// <summary>
        /// 获取选中行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DG_The_famous_tea_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            //获取当控件 将 sender 逆变 为 datagrid
            DataGrid dg = (DataGrid)sender; //通过 sender 获取控件  sender 类似于指针,指向某个事件 obj类型,所有类的基类都是obj

            Dg_left_name = dg.Name;         //获取值,这步没必要,因为sender 已经指向了当前控件
            Consumer p = dg.CurrentItem as Consumer;

            Dg_intselect = dg.SelectedIndex;
            // op.Add(p);
            projects.Clear();
            projects.Add(p);
            projects[0].Mun        = "1";
            projects[0].Discount   = 1.0M;
            projects[0].ID_Fangtai = ID_Room;
            projects[0].Time       = DateTime.Now;
        }
Exemple #12
0
 // An event that runs when selection is changed on the Product page DataGridView
 private void DataDisplay_OnSelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     try
     {
         if (this.DataDisplay.SelectedItem != null)
         {
             var selectedRow = (IProduct)this.DataDisplay.SelectedItem;
             this.ProductName.Text             = selectedRow.ProductName;
             this.ProductPrice.Text            = selectedRow.CostPrice.ToString(CultureInfo.InvariantCulture);
             this.CategorySelect.SelectedIndex = selectedRow.CategoryId - 1;
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
 }
        private void dtgAtendimento_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            try
            {
                DataRowView _dv = dtgAtendimento.CurrentCell.Item as DataRowView;

                if (_dv != null)
                {
                    codigo_atendimento    = _dv.Row[0].ToString();
                    btConsultar.IsEnabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemple #14
0
        private void RegistryGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            try
            {
                int selectedColumn = RegistryGrid.CurrentCell.Column.DisplayIndex;
                var selectedCell = RegistryGrid.SelectedCells[selectedColumn];
                var cellContent = selectedCell.Column.GetCellContent(selectedCell.Item);
                if (cellContent is TextBlock)
                {
                    CursorPosition.Text = "Выбрано:  " + (cellContent as TextBlock).Text;
                }
            }
            catch (Exception ex)
            {

            }
        }
Exemple #15
0
        private void List_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            recordData = RecordsList.SelectedItem as Customer;

            var selectedIndex = RecordsList.SelectedIndex;

            if (selectedIndex == -1)
            {
                NavigationPanel.Text = $"Customers: {viewRecordsData.View.Cast<object>().Count()}";
            }
            else
            {
                NavigationPanel.Text = $"Customer: {selectedIndex + 1} / {viewRecordsData.View.Cast<object>().Count()}";
            }

            DataContext = new { recordData, UserData };
        }
        private void GridClienti_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            var grid = sender as DataGrid;

            if (e != null && e.AddedCells != null && e.AddedCells.Count > 0 && e.AddedCells[0] != null && e.AddedCells[6] != null && e.AddedCells[6].Item != null)
            {
                ClientePerGriglia item = (ClientePerGriglia)e.AddedCells[6].Item;
                if (item.AssociatoValue == 2)
                {
                    e.AddedCells[0].Column.IsReadOnly = true;
                }
                else
                {
                    e.AddedCells[0].Column.IsReadOnly = false;
                }
            }
        }
Exemple #17
0
        protected override void OnSelectedCellsChanged(SelectedCellsChangedEventArgs e)
        {
            base.OnSelectedCellsChanged(e);
            var dictionary = new Dictionary <object, List <int> >();

            foreach (DataGridCellInfo ci in base.SelectedCells)
            {
                if (!dictionary.ContainsKey(ci.Item))
                {
                    dictionary.Add(ci.Item, new List <int>());
                }

                dictionary[ci.Item].Add(ci.Column.DisplayIndex);
            }

            SetValue(SelectedCellsProperty, dictionary);
        }
Exemple #18
0
 private void dgNhanVien_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     try
     {
         DataRowView _DataView = dgNhanVien.CurrentCell.Item as DataRowView;
         if (_DataView != null)
         {
             txtMaNV.Text      = _DataView.Row[0].ToString();
             txtHoTen.Text     = _DataView.Row[1].ToString();
             dateNgaySinh.Text = _DataView.Row[2].ToString();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Exemple #19
0
        private void OnSelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            var dataGrid = sender as DataGrid;

            Debug.Assert(dataGrid != null);
            if (dataGrid.CurrentCell.Column == null)
            {
                return;
            }
            var columnIndex    = dataGrid.CurrentCell.Column.DisplayIndex;
            var rowIndex       = dataGrid.Items.IndexOf(dataGrid.CurrentItem);
            var tableViewModel = DataContext as TableViewModel;

            Debug.Assert(tableViewModel != null);
            tableViewModel.SelectedRow    = rowIndex;
            tableViewModel.SelectedColumn = columnIndex;
        }
        private void selectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGrid    gd           = (DataGrid)sender;
            DataRowView row_selected = gd.SelectedItem as DataRowView;

            if (row_selected != null)
            {
                NewInsNameTxt.Text           = row_selected["admin_name"].ToString();
                NewInsGenderTxt.Text         = row_selected["admin_gender"].ToString();
                NewMemberPhoneNumberTxt.Text = row_selected["admin_tel"].ToString();
                NewInsEmailTxt.Text          = row_selected["admin_email"].ToString();
                NewInsNICTxt.Text            = row_selected["admin_NIC"].ToString();
                NewInsUnameTxt.Text          = row_selected["admin_username"].ToString();
                NewInspasswordTxt.Text       = row_selected["admin_password"].ToString();
            }
            idNum = row_selected["id"].ToString();
        }
Exemple #21
0
        private void gridSelectChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            foreach (var item in e.AddedCells)
            {
                if (item.Column != null)
                {
                    string col = item.Column.Header.ToString();
                    //tmp job num to be able to create the map value

                    //assuming job num always appears before the price
                    if (col.Equals("UserID") && item.Column.GetCellContent(item.Item) != null)
                    {
                        selectedUserID = (item.Column.GetCellContent(item.Item) as TextBlock).Text;
                    }
                }
            }
        }
        private void GetValueFromSelectedRowChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            try
            {
                DataRowView dataRow = (DataRowView)(sender as DataGrid).SelectedItem;

                string _Name      = dataRow.Row.ItemArray[1].ToString();
                string _DonViTinh = dataRow.Row.ItemArray[2].ToString();
                int    _Price     = Convert.ToInt32(dataRow.Row.ItemArray[4]);

                txtTenDoUong.Text = _Name;
                txtDonViTinh.Text = _DonViTinh;
                txtGia.Text       = _Price.ToString();
                txtGhiChu.Text    = "";
            }
            catch { }
        }
Exemple #23
0
        void datagridviewprob_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            var grid     = sender as DataGrid;
            var selected = grid.SelectedItems;

            foreach (var item in selected)
            {
                int    so     = selected.Count;
                var    Spy    = item as SpyView;
                string giatri = Spy.Check.ToString();
                string fale   = "False";
                if (string.Compare(giatri, fale) != 0)
                {
                    //textboxprop.Text += Spy.Name + Spy.Property.ToString() + "\n";
                }
            }
        }
        /// <summary>
        /// データグリッドの選択セルが変更された時のイベント処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SearchGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGrid grid = sender as DataGrid;

            if (grid.SelectedItem != null)
            {
                int ival;

                // 選択行の内容を各項目に設定
                適用開始年月日 = DateTime.Parse(getTargetCellValue(grid, GridColumnsMapping.適用開始日));
                消費税率    = int.TryParse(getTargetCellValue(grid, GridColumnsMapping.消費税率).Replace("%", ""), out ival) ? ival.ToString() : string.Empty;
                軽減税率    = int.TryParse(getTargetCellValue(grid, GridColumnsMapping.軽減税率).Replace("%", ""), out ival) ? ival.ToString() : string.Empty;

                // 編集ステータス表示
                changeMaintenanceMode(AppConst.MAINTENANCEMODE_EDIT);
            }
        }
Exemple #25
0
        private async void dgProveedorView_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataGrid    gd           = (DataGrid)sender;
            DataRowView row_selected = gd.SelectedItem as DataRowView;

            if (row_selected != null)
            {
                CrearGuia Ventana = new CrearGuia();

                Ventana.lblId.Content                 = row_selected["id"].ToString();
                Ventana.lblRutProveedor.Content       = row_selected["Rut"].ToString();
                Ventana.lblNombreProveedor.Content    = row_selected["Razon_social"].ToString();
                Ventana.lblDireccionProveedor.Content = row_selected["direccion"].ToString();
                Ventana.lblGiroProveedor.Content      = row_selected["giro"].ToString();
                Ventana.ShowDialog();
            }
        }
Exemple #26
0
 private void ItemGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     try {
         var item = ItemGrid.SelectedItem;
         txt_IdItem.Text    = (ItemGrid.SelectedCells[0].Column.GetCellContent(item) as TextBlock).Text;
         txt_NameItem.Text  = (ItemGrid.SelectedCells[1].Column.GetCellContent(item) as TextBlock).Text;
         txt_PriceItem.Text = (ItemGrid.SelectedCells[2].Column.GetCellContent(item) as TextBlock).Text;
         txt_StockItem.Text = (ItemGrid.SelectedCells[3].Column.GetCellContent(item) as TextBlock).Text;
         cmb_Supplier.Text  = (ItemGrid.SelectedCells[4].Column.GetCellContent(item) as TextBlock).Text;
     } catch {
         txt_Id.Text                = "";
         txt_NameItem.Text          = "";
         txt_PriceItem.Text         = "";
         txt_StockItem.Text         = "";
         cmb_Supplier.SelectedValue = 0;
     }
 }
Exemple #27
0
        private void dataGridAchievement_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            object item = dataGridAchievement.SelectedItem;

            if (dataGridAchievement.SelectedIndex < 0)
            {
                textBlockIdAchievement.Text = "";
                textBoxNameAchievement.Text = "";
                dateDateAchievement.Text    = "";
            }
            else
            {
                textBlockIdAchievement.Text      = (dataGridAchievement.SelectedCells[0].Column.GetCellContent(item) as TextBlock).Text;
                textBoxNameAchievement.Text      = (dataGridAchievement.SelectedCells[1].Column.GetCellContent(item) as TextBlock).Text;
                dateDateAchievement.SelectedDate = Convert.ToDateTime((dataGridAchievement.SelectedCells[2].Column.GetCellContent(item) as TextBlock).Text);
            }
        }
 private void dataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     try
     {
         if (dataGrid.SelectedItem == null)
         {
             return;
         }
         DataRowView dataRow   = (DataRowView)dataGrid.SelectedItem;
         int         index     = dataGrid.CurrentCell.Column.DisplayIndex;
         string      cellValue = dataRow.Row.ItemArray[index].ToString();
         TempString = cellValue;
     }
     catch
     {
     }
 }
        private void dataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            DataRowView drw = (DataRowView)dataGrid.SelectedItem;

            try
            {
                if (drw["Reason"].ToString() != null)
                {
                    NGReason = drw["Reason"].ToString() + "-" + RJMessage(Convert.ToInt16(drw["Reason"].ToString()));
                }
            }
            catch (Exception)
            {
            }

            drw = null;
        }
Exemple #30
0
 private void DataGridCavDet_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
 {
     // Debe mostrar al principio el ID para mandar llamar la funcion a otro formulario mediante una variable publica
     // cuando esta variable se deja de usar o cierra el dialogo se vacia esta variable.
     try
     {
         DataRowView row = DataGridCavDet.SelectedItem as DataRowView;
         WpfDisp.cnnClass.publicCavDet     = row.Row.ItemArray[0].ToString();
         WpfDisp.cnnClass.idLAPublicUpdate = row.Row.ItemArray[2].ToString();
         UpdateCavity AcCav = new UpdateCavity();
         AcCav.ShowDialog();
         // MessageBox.Show(row.Row.ItemArray[0].ToString());
     }
     catch
     {
     }
 }
        // This method is called from DataGrid.OnSelectedCellsChanged
        // Raises the selection events when Cell selection changes
        internal void RaiseAutomationCellSelectedEvent(SelectedCellsChangedEventArgs e)
        {
            // If the result of an AddToSelection or RemoveFromSelection is a single selected cell,
            // then all we raise is the ElementSelectedEvent for single item
            if (AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementSelected) &&
                this.OwningDataGrid.SelectedCells.Count == 1 && e.AddedCells.Count == 1)
            {
                DataGridCellItemAutomationPeer cellPeer = GetCellItemPeer(e.AddedCells[0]);
                if (cellPeer != null)
                {
                    cellPeer.RaiseAutomationEvent(AutomationEvents.SelectionItemPatternOnElementSelected);
                }
            }
            else
            {
                int i;
                if (AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementAddedToSelection))
                {
                    for (i = 0; i < e.AddedCells.Count; i++)
                    {
                        DataGridCellItemAutomationPeer cellPeer = GetCellItemPeer(e.AddedCells[i]);
                        if (cellPeer != null)
                        {
                            cellPeer.RaiseAutomationEvent(AutomationEvents.SelectionItemPatternOnElementAddedToSelection);
                        }
                    }
                }

                if (AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection))
                {
                    for (i = 0; i < e.RemovedCells.Count; i++)
                    {
                        DataGridCellItemAutomationPeer cellPeer = GetCellItemPeer(e.RemovedCells[i]);
                        if (cellPeer != null)
                        {
                            cellPeer.RaiseAutomationEvent(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection);
                        }
                    }
                }
            }
        }
        /// <summary>
        ///     Called when there are changes to the SelectedCells collection.
        /// </summary>
        /// <param name="e">Event arguments that indicate which cells were added or removed.</param>
        /// <remarks>
        ///     Base implementation fires the public SelectedCellsChanged event.
        /// </remarks>
        protected virtual void OnSelectedCellsChanged(SelectedCellsChangedEventArgs e)
        {
            if (SelectedCellsChanged != null)
            {
                SelectedCellsChanged(this, e);
            }

            // Raise automation events
            if (AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementSelected) ||
                AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementAddedToSelection) ||
                AutomationPeer.ListenerExists(AutomationEvents.SelectionItemPatternOnElementRemovedFromSelection))
            {
                DataGridAutomationPeer peer = DataGridAutomationPeer.FromElement(this) as DataGridAutomationPeer;
                if (peer != null)
                {
                    peer.RaiseAutomationCellSelectedEvent(e);
                }
            }
        }
        /// <summary>
        ///     Fires the public change event when there are pending cell changes.
        /// </summary>
        private void NotifySelectedCellsChanged()
        {
            if (((_pendingSelectedCells != null) && (_pendingSelectedCells.Count > 0)) || 
                ((_pendingUnselectedCells != null) && (_pendingUnselectedCells.Count > 0)))
            {
                // Create the new event args
                SelectedCellsChangedEventArgs e = new SelectedCellsChangedEventArgs(this, _pendingSelectedCells, _pendingUnselectedCells);

                // Calculate the previous and current selection counts to determine if commands need invalidating
                int currentSelectionCount = _selectedCells.Count;
                int unselectedCellCount = (_pendingUnselectedCells != null) ? _pendingUnselectedCells.Count : 0;
                int selectedCellCount = (_pendingSelectedCells != null) ? _pendingSelectedCells.Count : 0;
                int previousSelectionCount = currentSelectionCount - selectedCellCount + unselectedCellCount;

                // Clear the pending lists
                _pendingSelectedCells = null;
                _pendingUnselectedCells = null;

                // Fire the public event
                OnSelectedCellsChanged(e);

                // If old or new selection is empty - invalidate Copy command
                if ((previousSelectionCount == 0) || (currentSelectionCount == 0))
                {
                    // The Copy command needs to have CanExecute run
                    CommandManager.InvalidateRequerySuggested();
                }
            }
        }