This is difficult because it does quite a few things that are not standard for F #.
The translation of this code in C # will be as follows:
type MyButtonSimple() as self =
inherit Button()
static let tapEvent =
EventManager.RegisterRoutedEvent
( "Tap", RoutingStrategy.Bubble,
typeof<RoutedEventHandler>, typeof<MyButtonSimple>)
let tapEvent =
{ new IDelegateEvent<RoutedEventHandler> with
member this.AddHandler del = self.AddHandler(MyButtonSimple.TapEvent, del)
member this.RemoveHandler del = self.RemoveHandler(MyButtonSimple.TapEvent, del) }
let raiseTapEvent() =
let newEventArgs = new RoutedEventArgs(MyButtonSimple.TapEvent)
self.RaiseEvent newEventArgs
static member TapEvent with get() = tapEvent
[<CLIEvent>]
member x.Tap = tapEvent
override self.OnClick() =
raiseTapEvent()
"gotchas" - , , IDelegateEvent , F #. , readonly F #, . WPF, , , "" .