private List <ITableRow> CreateDataForCellTable(string[] columnIdentifier, int countRows)
        {
            var list = new List <ITableRow>();

            var typeCellEnum = Enum.GetValues(typeof(TypeCell)).Cast <int>().ToList();
            var rand         = new Random();

            for (int i = 0; i < countRows; i++)
            {
                var tr = new TableRow();
                tr.RowHeight = 25;

                var wasCellTypes = new List <int>();
                foreach (var identifier in columnIdentifier)
                {
                    int cellType = -1;

                    while (true)
                    {
                        cellType = rand.Next(0, typeCellEnum.Count);

                        if (!wasCellTypes.Contains(cellType))
                        {
                            wasCellTypes.Add(cellType);
                            break;
                        }
                    }

                    ICell cell = null;
                    switch (cellType)
                    {
                    case 0:     //TextField
                        var tf = new TextFieldCell();
                        tf.Text = nameof(TextFieldCell);

                        cell = tf;
                        break;

                    case 1:     //TextView
                        var txtv = new TextViewCell();
                        txtv.Text = nameof(TextViewCell) + " change column size";

                        cell = txtv;
                        break;

                    case 2:     //Button
                        var btn = new ButtonCell();
                        btn.Text    = nameof(ButtonCell);
                        btn.Enabled = true;

                        btn.Activated = () => {
                            _alertWindow.ShowAlert(
                                nameof(ButtonCell),
                                "You activeted button",
                                "OK");
                        };

                        cell = btn;
                        break;

                    case 3:     //CheckBox
                        var ckb = new CheckboxCell();
                        ckb.Text            = nameof(CheckboxCell);
                        ckb.AllowMixedState = true;
                        ckb.Enabled         = true;

                        //also can use
                        //ckb.StateChanged += (state) => {};

                        ckb.Activated = () => {
                            var state = string.Empty;

                            if (ckb.State == null)
                            {
                                state = "mixed";
                            }
                            else
                            {
                                state = ckb.State.ToString();
                            }

                            _alertWindow.ShowAlert(
                                nameof(CheckboxCell),
                                "You activeted checkbox. State: " + state,
                                "OK");
                        };

                        cell = ckb;
                        break;

                    case 4:     //PopUp
                        var btnP = new PopUpButtonCell();
                        //popup.Text = nameof(PopUpButtonCell);
                        btnP.Enabled = true;

                        btnP.MenuTitles = new string[] {
                            "Title1", "Title2", "Title3"
                        };

                        //also can use
                        //btnP.SelectItem += (index) => {};

                        btnP.Activated = () => {
                            _alertWindow.ShowAlert(
                                nameof(CheckboxCell),
                                "You activeted checkbox. Selected title: " +
                                btnP.MenuTitles[btnP.IndexOfSelectedItem],
                                "OK");
                        };

                        cell = btnP;
                        break;
                    }

                    tr.Cells.Add(identifier, cell);
                }

                list.Add(tr);
            }

            return(list);
        }
        public ICell CreateCell(int cellType)
        {
            ICell cell = null;

            switch (cellType)
            {
            case 0:     //TextField
                var tf = new TextFieldCell();
                tf.Text = nameof(TextFieldCell);

                cell = tf;
                break;

            case 1:     //TextView
                var txtv = new TextViewCell();
                txtv.Text = nameof(TextViewCell) + " change column size";

                cell = txtv;
                break;

            case 2:     //Button
                var btn = new ButtonCell();
                btn.Text    = nameof(ButtonCell);
                btn.Enabled = true;

                btn.Activated = () => {
                    _alertWindow.ShowAlert(
                        nameof(ButtonCell),
                        "You activeted button",
                        "OK");
                };

                cell = btn;
                break;

            case 3:     //CheckBox
                var ckb = new CheckboxCell();
                ckb.Text            = nameof(CheckboxCell);
                ckb.AllowMixedState = true;
                ckb.Enabled         = true;

                //also can use
                //ckb.StateChanged += (state) => {};

                ckb.Activated = () => {
                    var state = string.Empty;

                    if (ckb.State == null)
                    {
                        state = "mixed";
                    }
                    else
                    {
                        state = ckb.State.ToString();
                    }

                    _alertWindow.ShowAlert(
                        nameof(CheckboxCell),
                        "You activeted checkbox. State: " + state,
                        "OK");
                };

                cell = ckb;
                break;

            case 4:     //PopUp
                var btnP = new PopUpButtonCell();
                //popup.Text = nameof(PopUpButtonCell);
                btnP.Enabled = true;

                btnP.MenuTitles = new string[] {
                    "Title1", "Title2", "Title3"
                };

                //also can use
                //btnP.SelectItem += (index) => {};

                btnP.Activated = () => {
                    _alertWindow.ShowAlert(
                        nameof(CheckboxCell),
                        "You activeted checkbox. Selected title: " +
                        btnP.MenuTitles[btnP.IndexOfSelectedItem],
                        "OK");
                };

                cell = btnP;
                break;
            }


            return(cell);
        }