我正試圖在WPF的SizeChanged
事件窗口中處理一些事情。我有一些自定義代碼,我需要執行後用戶完成調整窗口的大小,不幸的是,我沒有遇到過這種情況,所以我創建了一個使用Reactive Extensions來限制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);
});
基本上這樣做是確保在調用我的自定義代碼之前,必須經過200毫秒的無SizeChanged事件。這工作正常,但我遇到了一個問題,如果用戶拖動窗口句柄,並繼續按住鼠標按鈕,代碼仍然會被執行。我希望能夠確保在鼠標按鍵關閉時執行自定義代碼不能。我嘗試插入PreviewMouseLeftButtonDown
,但只有在窗口框架內單擊鼠標時纔會觸發窗口句柄。有沒有類似的事件可以插入適用於窗口句柄的鼠標?或者任何人都可以爲我遇到的問題想出一個合適的解決方法?
啊,忘了這一點......這可能是比上面我嘗試一個更簡潔的方法。 :) – JerKimball 2013-05-07 16:36:35
我可能應該提到我實際上有一些工作代碼使用互操作服務,但希望找到一些不太沉重的東西......它很難在代碼審查中解釋爲什麼我需要拉低級別的窗口東西對於看起來應該如此微不足道的東西。不過謝謝,博客文章是一個很好的閱讀。 – 2013-05-07 17:03:46