我现在在处理WPF窗口上的SizeChanged
事件时需要跨越一些障碍。我有一些自定义代码需要在用户完成调整窗口大小之后执行,不幸的是我还没有发现任何与此相关的事件,因此我使用了响应式扩展来限制SizeChange事件:
IObservable<SizeChangedEventArgs> ObservableSizeChanges = Observable
.FromEventPattern<SizeChangedEventArgs>(this, "SizeChanged")
.Select(x => x.EventArgs)
.Throttle(TimeSpan.FromMilliseconds(200));
IDisposable SizeChangedSubscription = ObservableSizeChanges
.ObserveOn(SynchronizationContext.Current)
.Subscribe(x => {
Size_Changed(x);
});
基本上,它确保在没有 SizeChanged 事件发生200毫秒之后才调用我的自定义代码。这个功能很好,但是如果用户将窗口手柄拖出并继续按住鼠标按钮,则代码仍将被执行。我想确保在鼠标按钮按下时不能执行自定义代码。我尝试连接到
PreviewMouseLeftButtonDown
,但它仅在单击窗口框架内的鼠标时触发,而不是在单击窗口手柄时触发。有没有类似的事件可以插入到适用于窗口句柄的鼠标按下?或者有人能想到一个适合我问题的解决方法吗?