WPF隧道按钮点击

本文关键字:按钮 隧道 WPF | 更新日期: 2023-09-27 18:05:29

这是我的第一个问题,所以请放心:)

我是WPF和基于桌面的应用程序的新手,我正在学习事件处理。通过鼓泡和隧道我找不到一个例子,解释如何在Button_Click上使用隧道。

基本上,当我单击一个按钮时,我需要父控件(在本例中是一个网格)首先处理事件,并在允许Button_Click发生之前进行一些检查。我遇到的问题是,我可以使用Grid_PreviewMouseDown来捕获事件,但这是模糊的!它没有告诉我(至少我认为它没有告诉我)是哪个控件触发了处理程序。

我能做些什么来确定PreviewMouseDown是由按钮点击触发的?或者:是否有一个替代/更好的是隧道Button_Click?

谢谢

WPF隧道按钮点击

在处理程序中,您应该检查事件的Source以获得启动它的控件。请注意,它不是只读的,并且可以更改,以便Source引用不同的控件。

你可能会有更好的运气与PreviewMouseLeftButtonDown事件注册获得左点击,而不仅仅是任何点击。

如果处理程序只查找鼠标左键,可以使用以下代码:

private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Button button = e.Source as Button;
    if (button != null)
    {
        // button is being clicked, handle it
    }
}