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!"; }
///// <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)); }
protected override Task OnBindedViewLoad(MVVMSidekick.Views.IView view) { Init(); return(base.OnBindedViewLoad(view)); }
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)); }