我试图在构造函数中使用以下代码在ReactiveUserControl中的MouseMove事件中添加一个Observable:
this.WhenActivated(disposables =>
{
var movingEvents = Observable.FromEventPattern<MouseEventHandler, MouseEventArgs>(h => MouseMove += h, h => MouseMove -= h);
var mousePosition = movingEvents.Select(evt => evt.EventArgs.GetPosition(this));
mousePosition.Subscribe(pos => Console.WriteLine(pos.ToString()));
}
它可以工作,但是有时它只是简单地停止“捕获”事件一段随机时间。如果我在MainWindow构造函数(只是一个Window控件)中使用相同的代码,它似乎会获取所有事件。
有什么我想念的吗?
答案 0 :(得分:-1)
我首先考虑使用ReactiveUI.Events.WPF NuGet包。它包含所有常见的UI事件,因此您不必使用FromEventPattern自己生成它们。
对于UserControl问题,可能是您需要背景设置。 WPF默认情况下不会将其触发。有关更多详细信息,请参见OnMouseMove does not fire on canvas in WPF。