[英]Draggable Borderless Window and Button click handler in WPF
由於Windows鼠標按下處理程序中的DragMove調用,因此Button處理程序不起作用。 有什么辦法讓事件冒泡嗎? 我嘗試將e.Handled
設置為false,但是它不起作用。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
e.Handled = false;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
System.Console.WriteLine("zde");
}
}
The Button handler doesnt work because of the DragMove call
實際上,這是行不通的,因為第一次觸發是Button.Click
一個事件,當它起作用時,它會與以下事件發生沖突:MouseLeftButtonDown,MouseUp,MouseDown和路由事件e.Handled
屬性默認為false 。
要使此工作正常進行,您需要定義一個PreviewMouseDown
事件,但這是一個Tunnel事件,這意味着它將進入VisualTree
層次結構,因此它在Bubble事件之前觸發。
例:
XAML
<Window x:Class="MyProject.MainWindow"
...
PreviewMouseDown="Window_PreviewMouseDown" ... />
Code-behind
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
this.DragMove();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.