Wpf DependencyProperty-如何设置值的阶跃变化?

Wpf DependencyProperty-如何设置值的阶跃变化?,wpf,xaml,dependency-properties,Wpf,Xaml,Dependency Properties,我为UserControl创建了一个DependencyProperty,其范围应在-2。。二, 在“属性”窗口中旋转鼠标滚轮时。 属性值更改1。我想将值更改为0.1 如何设置DependencyProperty中的阶跃更改? 我在XAML编辑器中处理属性 public double Value { get { return (double)GetValue(BarValueProperty); } set { SetValue(

我为UserControl创建了一个DependencyProperty,其范围应在-2。。二,

在“属性”窗口中旋转鼠标滚轮时。 属性值更改1。我想将值更改为0.1 如何设置DependencyProperty中的阶跃更改? 我在XAML编辑器中处理属性

 public double Value
        {
            get { return (double)GetValue(BarValueProperty); }
            set { SetValue(BarValueProperty, value); }
        }


        public static readonly DependencyProperty BarValueProperty =
        DependencyProperty.Register("Value", typeof(double), typeof(MeterBar), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));

在将
FrameworkPropertyMetadata
选项添加到
DependencyProperty
的定义中时,有一个选项提供
强制值回调
处理程序。您可以更改此处理程序中的输入值。有关完整的详细信息,请参阅MSDN上的页面。从链接页面:

public static readonly DependencyProperty CurrentReadingProperty = 
    DependencyProperty.Register(
    "CurrentReading",
    typeof(double),
    typeof(Gauge),
    new FrameworkPropertyMetadata(
        Double.NaN,
        FrameworkPropertyMetadataOptions.AffectsMeasure,
        new PropertyChangedCallback(OnCurrentReadingChanged),
        new CoerceValueCallback(CoerceCurrentReading)
    ),
    new ValidateValueCallback(IsValidReading)
);
public double CurrentReading
{
  get { return (double)GetValue(CurrentReadingProperty); }
  set { SetValue(CurrentReadingProperty, value); }
}

...

private static object CoerceCurrentReading(DependencyObject d, object value)
{
    // Do whatever calculation to update your value you need to here
    Gauge g = (Gauge)d;
    double current = (double)value;
    if (current
            <g.MinReading) current = g.MinReading;
    if (current >g.MaxReading) current = g.MaxReading;
    return current;
}
public static readonly dependencProperty CurrentReadingProperty=
从属属性。寄存器(
“当前阅读”,
类型(双),
类型(仪表),
新框架属性元数据(
双楠,
FrameworkPropertyMetadataOptions.AffectsMeasure,
新属性更改回拨(一旦更改),
新的强制值回调(强制重新读取)
),
新ValidateValueCallback(IsValidating)
);
公共双电流读数
{
获取{return(double)GetValue(CurrentReadingProperty);}
set{SetValue(CurrentReadingProperty,value);}
}
...
私有静态对象强制重新读取(DependencyObject d,对象值)
{
//进行任何计算以更新您需要在此处更新的值
量具g=(量具)d;
双电流=(双)值;
如果(当前)
g、 最大读数)电流=g.最大读数;
回流;
}

据我所知,这是为了控制值的范围。但我需要从“设置”窗口控制步长更改。