我正尝试在构造函数中使用以下代码向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构造函数中使用相同的代码,该构造函数只是一个窗口控件,它似乎获得所有事件。
我是不是漏掉了什么?
发布于 2019-01-31 01:29:35
我会首先考虑使用ReactiveUI.Events.WPF NuGet包。它包含所有常见的UI事件,因此您不必使用FromEventPattern自己生成它们。
对于UserControl问题,很可能是您需要背景设置。默认情况下,WPF不会触发它们。有关更多详细信息,请参阅OnMouseMove does not fire on canvas in WPF。
https://stackoverflow.com/questions/54444489
复制相似问题