如何为我的财产创建自定义事件

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


现在我想为我的财产创建一个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));


慕森王
浏览 113回答 1
1回答

largeQ

像往常一样定义一个事件(如果有意义的话,可以将其定义为路由事件),然后在引发该事件的地方注册一个依赖属性回调。像这样的东西: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或类似的事物中获得。这只是当依赖项属性更改时如何引发自定义事件的示例。
打开App,查看更多内容
随时随地看视频慕课网APP