public LabelCellTestViewModel(INavigationService navigationService, IPageDialogService pageDialog)
        {
            BackgroundColor.Value = Color.White;
            PickerTitle.Value     = "Hoge";

            TimeFormat.Value = "t";
            Time.Value       = new TimeSpan(12, 0, 0);

            DateFormat.Value = DateFormats[0];
            TodayText.Value  = TodayTexts[0];
            Date.Value       = Dates[0];
            MaxDate.Value    = MaxDates[0];
            MinDate.Value    = MinDates[0];

            CanExecute.Value = CanExecutes[0];

            Commands[0] = CanExecute.ToReactiveCommand();
            Commands[1] = CanExecute.ToReactiveCommand();

            CommandParameter.Value = Parameters[0];
            Command.Value          = Commands[0];

            Commands[0].Subscribe(async p =>
            {
                await pageDialog.DisplayAlertAsync("Command1", p?.ToString(), "OK");
                await navigationService.NavigateAsync("ContentPage");
            });

            Commands[1].Subscribe(async p =>
            {
                await pageDialog.DisplayAlertAsync("Command2", p?.ToString(), "OK");
            });
            NumberSelectedCommand.Subscribe(async p =>
            {
                await pageDialog.DisplayAlertAsync("", p.ToString(), "OK");
            });
            TextSelectedCommand.Subscribe(async p => {
                await pageDialog.DisplayAlertAsync("", p?.ToString(), "OK");
            });
        }
        void btn_Click(object sender, RoutedEventArgs e)
        {
            var btn = (sender as ToggleButton);

            if (btn == null || btn.Tag == null)
            {
                return;
            }

            var newNumber = btn.Tag.ToString();

            if (SingleClickModeEnabled)
            {
                Reset();

                int n;

                if (NumberSelectedCommand != null && Int32.TryParse(newNumber, out n))
                {
                    NumberSelectedCommand.Execute(n);
                }

                return;
            }

            switch (clicksCount)
            {
            case 0:
            case 1:
                if (clicksCount == 0 && newNumber == "0")
                {
                    Reset();
                    return;
                }

                if (selectedNumber == newNumber)
                {
                    btn.Content   = selectedNumber + newNumber;
                    btn.IsChecked = true;
                }

                selectedNumber += newNumber;
                clicksCount++;

                int numb;
                if (Int32.TryParse(selectedNumber, out numb) && NumberSelectedCommand != null)
                {
                    NumberSelectedCommand.Execute(numb);
                }

                break;

            default:
                Reset();

                if (NumberSelectedCommand != null)
                {
                    NumberSelectedCommand.Execute(0);
                }
                break;
            }
        }