static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { CNum c = (CNum)d; double val = (double)e.NewValue; if (double.IsInfinity(val)) { throw new ArgumentException("无效值"); } if (c._levelsFromRootCall == 0) { c._requestedVal = val; c._initialVal = (double)e.OldValue; } c._levelsFromRootCall++; c.CoerceValue(); c._levelsFromRootCall--; if (c._levelsFromRootCall == 0) { if (!AreClose(c._initialVal, val)) { c.OnValueChanged(new ValueChangedEventArgs <double>(c._initialVal, val)); } } }
static void OnMinimumPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { CNum c = (CNum)d; if (!IsValidDoubleValue((double)e.NewValue)) { throw new ArgumentException("无效最小值"); } if (c._levelsFromRootCall == 0) { c._initialMax = c.Maximum; c._initialVal = c.Value; } c._levelsFromRootCall++; c.CoerceMaximum(); c.CoerceValue(); c._levelsFromRootCall--; if (c._levelsFromRootCall == 0) { // UI 自动化 } }