簡體   English   中英

如何為我的媒體資源創建自定義事件

[英]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));

照常定義一個事件(如果有意義,可以將其定義為路由事件 ),然后在引發該事件的位置注冊依賴項屬性回調。 像這樣:

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類的東西派生。 這只是當依賴項屬性更改時如何引發自定義事件的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM