Example #1
0
        protected override async Task OnBindedViewLoad(MVVMSidekick.Views.IView view)
        {
            await base.OnBindedViewLoad(view);

            if (IsInDesignMode)
            {
                HelloWorld = "Hello Mvvm world, Design mode sample";
            }
            else
            {
                if (Id == null)
                {
                    Id = Guid.NewGuid().ToString();
                }

                GetValueContainer(x => x.CountDown).GetNullObservable()
                .Subscribe(
                    _ =>
                {
                    HelloWorld = string.Format("Loading {0}", CountDown);
                }
                    );
            }
            // Loading count down. You may want to replace your own logic here.
            await ExecuteTask(
                async() =>
            {
                try
                {
                    for (Double i = CountDown; i > 0; i = i - 1)
                    {
                        CountDown = i;
                        await TaskExHelper.Delay(500);
                    }
                    CountDown  = 0;
                    HelloWorld = "Hello Mvvm world!";
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    StateName = "Loaded";
                }
            }

                );

            Title = "Hello Mvvm world2!";
        }
Example #2
0
        ///// <summary>
        ///// This will be invoked by view when this viewmodel instance is set to view's ViewModel property.
        ///// </summary>
        ///// <param name="view">Set target</param>
        ///// <param name="oldValue">Value before set.</param>
        ///// <returns>Task awaiter</returns>
        //protected override Task OnBindedToView(MVVMSidekick.Views.IView view, IViewModel oldValue)
        //{
        //    return base.OnBindedToView(view, oldValue);
        //}

        ///// <summary>
        ///// This will be invoked by view when this instance of viewmodel in ViewModel property is overwritten.
        ///// </summary>
        ///// <param name="view">Overwrite target view.</param>
        ///// <param name="newValue">The value replacing </param>
        ///// <returns>Task awaiter</returns>
        //protected override Task OnUnbindedFromView(MVVMSidekick.Views.IView view, IViewModel newValue)
        //{
        //    return base.OnUnbindedFromView(view, newValue);
        //}

        ///// <summary>
        ///// This will be invoked by view when the view fires Load event and this viewmodel instance is already in view's ViewModel property
        ///// </summary>
        ///// <param name="view">View that firing Load event</param>
        ///// <returns>Task awaiter</returns>
        //protected override Task OnBindedViewLoad(MVVMSidekick.Views.IView view)
        //{
        //    return base.OnBindedViewLoad(view);
        //}

        /// <summary>
        /// This will be invoked by view when the view fires Unload event and this viewmodel instance is still in view's  ViewModel property
        /// </summary>
        /// <param name="view">View that firing Unload event</param>
        /// <returns>Task awaiter</returns>
        protected override Task OnBindedViewUnload(MVVMSidekick.Views.IView view)
        {
            this.CloseViewAndDispose();
            return(base.OnBindedViewUnload(view));
        }
 /// <summary>
 /// This will be invoked by view when the view fires Unload event and this viewmodel instance is still in view's  ViewModel property
 /// </summary>
 /// <param name="view">View that firing Unload event</param>
 /// <returns>Task awaiter</returns>
 protected override Task OnBindedViewUnload(MVVMSidekick.Views.IView view)
 {
     return(base.OnBindedViewUnload(view));
 }
        ///// <summary>
        ///// This will be invoked by view when this instance of viewmodel in ViewModel property is overwritten.
        ///// </summary>
        ///// <param name="view">Overwrite target view.</param>
        ///// <param name="newValue">The value replacing </param>
        ///// <returns>Task awaiter</returns>
        //protected override Task OnUnbindedFromView(MVVMSidekick.Views.IView view, IViewModel newValue)
        //{
        //    return base.OnUnbindedFromView(view, newValue);
        //}

        /// <summary>
        /// This will be invoked by view when the view fires Load event and this viewmodel instance is already in view's ViewModel property
        /// </summary>
        /// <param name="view">View that firing Load event</param>
        /// <returns>Task awaiter</returns>
        protected override Task OnBindedViewLoad(MVVMSidekick.Views.IView view)
        {
            SubscribeCommand();
            _vm = Singleton <ToastInstance> .Instance;
            return(base.OnBindedViewLoad(view));
        }
 /// <summary>
 /// This will be invoked by view when this viewmodel instance is set to view's ViewModel property.
 /// </summary>
 /// <param name="view">Set target</param>
 /// <param name="oldValue">Value before set.</param>
 /// <returns>Task awaiter</returns>
 protected override Task OnBindedToView(MVVMSidekick.Views.IView view, IViewModel oldValue)
 {
     return(base.OnBindedToView(view, oldValue));
 }
Example #6
0
 protected override Task OnBindedViewLoad(MVVMSidekick.Views.IView view)
 {
     Init();
     return(base.OnBindedViewLoad(view));
 }
Example #7
0
        protected override Task OnBindedToView(MVVMSidekick.Views.IView view, IViewModel oldValue)
        {
            ResetStatus();
            if (IsInDesignMode)
            {
                CurrentInput = "CurrentInput.TEXT55555555555555555555555555555555";
                LeftNumber   = "LeftNumber.TEXT88888888888888888888";
                RightNumber  = "RightNumber.TEXTTEXT55555555555555555555555555555555";
                Sign         = "+";
            }


            this.GetValueContainer(x => x.CurrentInput)
            .GetNewValueObservable()
            .Subscribe
            (
                nvp =>
            {
                switch (this.State)
                {
                case CalculatorState.InputingLeft:
                    this.LeftNumber = decimal.Parse(nvp.EventArgs).ToString();
                    break;

                case CalculatorState.InputingRight:
                    this.RightNumber = decimal.Parse(nvp.EventArgs).ToString();
                    break;

                default:
                    break;
                }
            }
            ).DisposeWith(this);

            this.CommandInputNumber
            .CommandCore
            .Where(e => e.EventArgs.Parameter.ToString() != ".")
            .Subscribe(
                e =>
            {
                if (State == CalculatorState.Finished)
                {
                    ResetStatus();
                }
                else if (State == CalculatorState.InputedSign)
                {
                    State = CalculatorState.InputingRight;
                    ResetPropertyValue(_IsPointed);
                    ResetPropertyValue(_CurrentInput);
                }
                string output = null;
                if (IsPointed)
                {
                    output = CurrentInput + e.EventArgs.Parameter.ToString();
                }
                else
                {
                    output = CurrentInput.TrimEnd('.') + e.EventArgs.Parameter.ToString() + '.';
                }

                if (!output.StartsWith("0."))
                {
                    CurrentInput = output.TrimStart('0');
                }
            }
                )
            .DisposeWith(this);


            this.CommandInputNumber
            .CommandCore
            .Where(e => e.EventArgs.Parameter.ToString() == ".")
            .Subscribe(e => IsPointed = true)
            .DisposeWith(this);


            this.CommandBackspace
            .CommandCore
            .Where(e => IsPointed && CurrentInput.EndsWith("."))
            .Subscribe(_ => IsPointed = false)
            .DisposeWith(this);

            this.CommandBackspace
            .CommandCore
            .Where(e => !(IsPointed && CurrentInput.EndsWith(".")))
            .Subscribe(
                e =>
            {
                var tempv = CurrentInput;
                if (tempv.Trim('-').Length > 2)
                {
                    CurrentInput = tempv.Substring(tempv.Length - 1);
                }
                else
                {
                    ResetPropertyValue(_CurrentInput);
                }
            }
                );

            this.CommandInputSign
            .CommandCore
            .Subscribe(
                e =>
            {
                this.Sign = e.EventArgs.Parameter.ToString();
                if (State == CalculatorState.Finished)
                {
                    LeftNumber  = CurrentInput;
                    RightNumber = "0.";
                }
                State = CalculatorState.InputedSign;
            }
                )
            .DisposeWith(this);

            this.CommandClear
            .CommandCore
            .Subscribe(
                e =>
            {
                ResetStatus();
            }
                )
            .DisposeWith(this);
            this.CommandCalculate.CommandCore
            .Where(
                e => State == CalculatorState.InputingRight || State == CalculatorState.Finished
                )
            .Subscribe
            (
                e =>
            {
                if (State == CalculatorState.Finished)
                {
                    LeftNumber = Result;
                }
                State          = CalculatorState.Calculating;
                var left       = decimal.Parse(LeftNumber);
                var right      = decimal.Parse(RightNumber);
                decimal result = 0;
                switch (Sign)
                {
                case "+":

                    result = left + right;
                    break;

                case "-":

                    result = left - right;
                    break;

                case "*":

                    result = left * right;
                    break;

                case "/":
                    result = left / right;
                    break;

                default:
                    break;
                }
                Result = result.ToString();

                IsPointed    = Result.Contains(".");
                CurrentInput = IsPointed ? Result : Result + ".";
                State        = CalculatorState.Finished;
            }

            )
            .DisposeWith(this);

            this.CommandChangeSignOfCurrentInput
            .CommandCore
            .Subscribe(
                e =>
            {
                var tmpv = (-decimal.Parse(CurrentInput)).ToString();

                if (State == CalculatorState.Finished)
                {
                    ResetStatus();
                }
                CurrentInput = tmpv.Contains(".") ? tmpv : tmpv + '.';
            }
                )
            .DisposeWith(this);
            return(base.OnBindedToView(view, oldValue));
        }