如何为我的 属性 创建自定义事件

how to create custom event for my property

我的自定义控件有一个 属性。

现在我想为我的 属性 创建一个 ValueChanged 活动。 (我的 属性 不需要回调,因为我希望用户可以使用此事件)

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

 public static readonly DependencyProperty ValueProperty =
        DependencyProperty.Register("Value", 
        typeof(double), typeof(SpeedoMeter), 
        new PropertyMetadata(0.0, null, OnCoerceValueChanged));

像往常一样定义一个事件(如果有意义,它可以定义为 routed event),然后在引发此事件的地方注册一个依赖项 属性 回调。像这样:

public event EventHandler ValueChanged;

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

public static readonly DependencyProperty ValueProperty =
    DependencyProperty.Register("Value", typeof(double), typeof(SpeedoMeter), new PropertyMetadata(0.0,
        OnChanged,
        OnCoerceValueChanged));

private static void OnChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    SpeedoMeter speedoMeter = (SpeedoMeter)d;
    EventHandler handler = speedoMeter.ValueChanged;
    if (handler != null)
    {
        handler(speedoMeter, EventArgs.Empty);
    }
}

显然,您可以为活动命名,属性 可以随意命名。如果你有一个 Value 属性 并且想要一个 ValueChanged 事件,你可以从 RangeBase 或类似的东西派生。这只是一个示例,说明当依赖项 属性 更改时如何引发自定义事件。