Hed*_*dge 3 .net c# wpf visual-studio
我有一个自定义事件,并希望附加一个属性(一个字符串就可以了).我需要在代码中更改什么:
public static readonly RoutedEvent ModelClickEvent = EventManager.RegisterRoutedEvent(
"ModelClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(InfoBox));
// Provide CLR accessors for the event
public event RoutedEventHandler FadeIn
{
add { AddHandler(ModelClickEvent, value); }
remove { RemoveHandler(ModelClickEvent, value); }
}
// This method raises the Tap event
void RaiseTapEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(InfoBox.FadeInEvent);
RaiseEvent(newEventArgs);
}
Run Code Online (Sandbox Code Playgroud)
首先,您需要创建一个包含新属性的新RoutedEventArgs派生类.就像是:
public class ModelClickEventArgs : RoutedEventArgs
{
public string MyString { get; set; }
public ModelClickEventArgs() : base() { }
public ModelClickEventArgs(RoutedEvent routedEvent) : base(routedEvent) { }
public ModelClickEventArgs(RoutedEvent routedEvent, object source) : base(routedEvent, source) { }
}
Run Code Online (Sandbox Code Playgroud)
然后,您将必须创建一个使用新事件args的委托:
public delegate void ModelClickEventHandler(object sender, ModelClickEventArgs e);
Run Code Online (Sandbox Code Playgroud)
之后,您必须对上面的代码进行更改,以便它使用这些新对象:
public static readonly RoutedEvent ModelClickEvent = EventManager.RegisterRoutedEvent(
"ModelClick", RoutingStrategy.Bubble, typeof(ModelClickEventHandler), typeof(Window));
// Provide CLR accessors for the event
public event ModelClickEventHandler FadeIn
{
add { AddHandler(ModelClickEvent, value); }
remove { RemoveHandler(ModelClickEvent, value); }
}
// This method raises the Tap event
void RaiseTapEvent()
{
ModelClickEventArgs newEventArgs = new ModelClickEventArgs();
newEventArgs.MyString = "some string";
RaiseEvent(newEventArgs);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |