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。
我正在尝试在构造函数中使用以下代码将 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。