示例#1
0
        /// <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();
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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));
        }