private static void StepSizeChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { ValueSlider Sender = (ValueSlider)sender; string DecimalSeparator = NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator; string StepString = (Sender.StepSize * Sender.DisplayMultiplicator).ToString(); int Decimals = 0; if (StepString.Contains(DecimalSeparator)) { string DecimalPart = StepString.Split(new string[] { DecimalSeparator }, StringSplitOptions.None)[1]; while (DecimalPart.Length > 0 && DecimalPart[DecimalPart.Length - 1] == '0') { DecimalPart = DecimalPart.Substring(0, DecimalPart.Length - 1); } Decimals = DecimalPart.Length; } Sender.Decimals = Decimals; string Format = "{0:0}"; if (Decimals > 0) { Format = "{0:0."; for (int i = 0; i < Decimals; i++) { Format += "0"; } Format += "}"; } Sender.Format = Format; Sender.StringValue = Sender.FormatValueForDisplay(Sender.TempValue); }
private static void StringValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { ValueSlider Sender = (ValueSlider)sender; if (Sender.IsPerformingManualEdit) { Sender.IsPerformingManualEdit = false; try { decimal NewValue = decimal.Parse((string)e.NewValue); decimal OldValue = Sender.Value; Sender.Value = Math.Max(Math.Min(Math.Round(NewValue / Sender.DisplayMultiplicator / Sender.StepSize) * Sender.StepSize, Sender.MaxValue), Sender.MinValue); Sender.OnValueChanged(Sender, new DependencyPropertyChangedEventArgs(ValueProperty, OldValue, NewValue)); } catch { } Sender.StringValue = Sender.FormatValueForDisplay(Sender.TempValue); } }