我想在 WPF 應用程式中處理點擊外部控制元件(滑塊)。
在我的應用程式中滑塊已啟用并保持啟用狀態,直到用戶單擊另一個控制元件或主視窗(通常在滑塊外部)。當 clickoutside 滑塊被抬起時,滑塊應該被禁用。
我試過以下事情:
處理來自主視窗的單擊并禁用 MainWindow 單擊事件中的滑塊。此解決方案不起作用,因為當我單擊滑塊本身時也會引發 MainWindow 單擊事件。
PreviewMouseDownOutsideCapturedElementEvent 基于:這個問題。此解決方案也不起作用,因為滑塊上的 CaputreMouse 導致滑塊拇指移動受阻并且滑鼠沒有跟隨點擊軌跡 (IsMoveToPointEnabled)。
滑塊上的 LostFocus 事件 - 未引發事件。
private void Slider_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Slider.Focus(); } //event not raised private void Slider_LostFocus(object sender, RoutedEventArgs e) { Slider.IsEnabled = false; } //changing focus in another control private void Slider2_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Slider2.Focus(); }
我可以嘗試另一種解決方案嗎?
uj5u.com熱心網友回復:
只要有人在視窗中單擊而不是在滑塊上單擊,下面的代碼就會禁用名為“MySlider”的滑塊。
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (!(e.Source is Slider s && s.Name == "MySlider"))
MySlider.IsEnabled = false;
}
它永遠不會重新啟用它,但你沒有要求?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330490.html
