ReactiveUserControl 上的 MouseMove Observable 未获取所有事件

MouseMove Observable on a ReactiveUserControl not getting all events

我正在尝试在构造函数中使用以下代码将 Observable 添加到 ReactiveUserControl 中的 MouseMove 事件:

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 控件,它似乎会获取所有事件。

有什么我遗漏的吗?

我会首先考虑使用 ReactiveUI.Events.WPF NuGet 包。它包含所有常见的 UI 事件,因此您不必使用 FromEventPattern 自己生成它们。

对于 UserControl 问题,可能是您需要背景设置。默认情况下 WPF 不会触发它们。有关详细信息,请参阅 OnMouseMove does not fire on canvas in WPF