由于Window鼠标按下处理程序中的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");
}
}
答案 0 :(得分:0)
The Button handler doesnt work because of the DragMove call
实际上,它不起作用,因为第一次触发是Button.Click
处的事件,当它起作用时,它会与以下事件冲突:MouseLeftButtonDown,MouseUp,MouseDown和路由事件{ {1}}属性默认为 false 。
要使这项工作,你需要定义一个e.Handled
事件,但它是一个隧道事件,这意味着它将落在PreviewMouseDown
层次结构中,因此它在之前触发泡泡事件。
示例:
VisualTree
XAML
<Window x:Class="MyProject.MainWindow"
...
PreviewMouseDown="Window_PreviewMouseDown" ... />
Code-behind