public event MouseButtonEventHandler MouseLeftButtonLongDown;
public Ctor()
{
InitializeComponent();
var cancelEvent = Observable.FromEvent<MouseButtonEventArgs>(this, "MouseLeftButtonUp");
var timer = Observable
.Timer(TimeSpan.FromSeconds(1))
.ObserveOnDispatcher();
Observable
.FromEvent<MouseButtonEventArgs>(this, "MouseLeftButtonDown")
.Subscribe(x=> timer
.TakeUntil(cancelEvent)
.Subscribe(e => MouseLeftButtonLongDown(x.Sender, x.EventArgs)));
MouseLeftButtonLongDown += (s,e) => MessageBox.Show("Test");
}
Für “this” kann natürlich jedes andere von UIELement abgeleitete XAML Element eingesetzt werden. Das Klick-Timeout liegt im Beispiel bei 1 Sekunde.
Keine Kommentare:
Kommentar veröffentlichen