/// <summary>
        /// Called when the user changes the checked state of an item.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Control_CheckedChanged(object sender, ListCheckedEventArgs e)
        {
            var listModel = e.Record as TListModel;

            if (CheckedChangedHandler != null && listModel != null)
            {
                CheckedChangedHandler(listModel, e.Checked);
            }
        }
Beispiel #2
0
 public void ListCheckedStateChanged(object sender, ListCheckedEventArgs e)
 {
     LocalDataBase.EnableBlocks(e.checkState, e.message);
     ((BlocksControlMenu)CustomMenu).ResetListData(LocalDataBase.GetAllBlocksList());
     BlocksDataAdapter.instance.Fill(LocalDataBase.GetEnabledBlocksList());
 }
        protected void OnCheckBoxClicked(object sender, ListCheckedEventArgs e)
        {
            if (_checkBoxActivated == false)
            {
                return;
            }
            _checkBoxActivated = false;
            CheckBox cb = e.OriginalSource as CheckBox;

            /*
             * ListBoxItem item = WpfFinder.getParentFromTemplate(cb, DependencyObjectType.FromSystemType(typeof(ListBoxItem))) as ListBoxItem;
             * //ListBox view = WpfFinder.getParentFromTemplate(item, DependencyObjectType.FromSystemType(typeof(ListBox))) as ListBox;
             * if (item == null) return;
             * ListRow row = item.Content as ListRow;
             */
            e.RowIndex = (Rows.IndexOf(sender as ListRow));

            int row_index = e.RowIndex;
            int col_index = e.ColumnIndex;


            if ((System.Windows.Input.Keyboard.GetKeyStates(Key.LeftShift) & KeyStates.Down) == KeyStates.Down)
            {
                if (BeforeClickedRow >= 0)
                {
                    int min = (BeforeClickedRow < row_index) ? BeforeClickedRow : row_index;
                    int max = (BeforeClickedRow < row_index) ? row_index : BeforeClickedRow;

                    for (int i = min; i <= max; i++)
                    {
                        rowCheckboxClicked(Rows[i], true);
                        CheckedIndices.Add(i);
                        CheckedRows.Add(Rows[i]);
                        if (E_CheckBoxChanged != null)
                        {
                            E_CheckBoxChanged(sender, new ListCheckedEventArgs((Boolean)cb.IsChecked, row_index, col_index));
                        }
                    }
                }
            }
            else if ((System.Windows.Input.Keyboard.GetKeyStates(Key.LeftCtrl) & KeyStates.Down) == KeyStates.Down)
            {
                if (BeforeClickedRow >= 0)
                {
                    int min = (BeforeClickedRow < row_index) ? BeforeClickedRow : row_index;
                    int max = (BeforeClickedRow < row_index) ? row_index : BeforeClickedRow;

                    for (int i = min; i <= max; i++)
                    {
                        rowCheckboxClicked(Rows[i], false);
                        if (CheckedIndices.IndexOf(i) >= 0)
                        {
                            CheckedIndices.Remove(i);
                            CheckedRows.Remove(Rows[i]);
                        }
                        if (E_CheckBoxChanged != null)
                        {
                            E_CheckBoxChanged(sender, new ListCheckedEventArgs((Boolean)cb.IsChecked, row_index, col_index));
                        }
                    }
                }
            }
            else
            {
                if (E_CheckBoxChanged != null)
                {
                    E_CheckBoxChanged(sender, new ListCheckedEventArgs((Boolean)cb.IsChecked, row_index, col_index));
                }
                BeforeClickedRow = row_index;
                if (cb.IsChecked == true && CheckedIndices.IndexOf(row_index) < 0)
                {
                    CheckedIndices.Add(row_index);
                    CheckedRows.Add(Rows[row_index]);
                }
                else if (CheckedIndices.IndexOf(row_index) >= 0)
                {
                    CheckedIndices.Remove(row_index);
                    CheckedRows.Remove(Rows[row_index]);
                }
            }
            _checkBoxActivated = true;
        }