/// <summary> /// Decrements or increments depending on factor /// </summary> /// <param name="factor">Multiplication factor (1 or -1) will be applied to the step</param> private async Task Change(double factor = 1) { var value = Num.To <T>(Num.From(Value) + Num.From(Step) * factor); await SetValueAsync(ConstrainBoundaries(value).value); _elementReference.SetText(Text).AndForget(); }
/// <summary> /// Checks if the value respects the boundaries set for this instance. /// </summary> /// <param name="v">Value to check.</param> /// <returns>Returns a valid value and if it has been changed.</returns> protected (T value, bool changed) ConstrainBoundaries(T v) { var value = Num.From(v); var max = Num.From(Max); var min = Num.From(Min); //check if Max/Min has value, if not use MaxValue/MinValue for that data type if (value > max) { return(Max, true); } else if (value < min) { return(Min, true); } return(Num.To <T>(value), false); }
/// <summary> /// Decrements or increments depending on factor /// </summary> /// <param name="factor">Multiplication factor (1 or -1) will be applied to the step</param> private Task Change(double factor = 1) { var value = Num.To <T>(Num.From(Value) + Num.From(Step) * factor); return(SetValueAsync(ConstrainBoundaries(value).value)); }