gpt4 book ai didi

UserControl 中的 WPF 路由事件处理

转载 作者:行者123 更新时间:2023-12-01 05:38:10 25 4
gpt4 key购买 nike

我有一个包含按钮的 WPF UserControl。我还有一个包含按钮的 WPF 窗口。
在 UserControl 和 Window 中,我在 XAML 中放置了以下行:

UIElement.PreviewMouseLeftButtonDown="OnPreviewMouseLeftButtonDown"

在“OnPreviewMouseLeftButtonDown”中,我放置了一个显示 args.Source 的调试打印。

当我单击窗口内的按钮时,我将按钮作为 EventArgs 源。但是,当我单击 UserControl 内的按钮(它也在一个窗口内,因此我可以测试它,但不是同一个窗口)时,我将 UserControl 作为 EventArgs 源。

我厌倦了查看 UserControl 周围是否有一些装饰器(使用 snoop),但它看起来很简单。

我不明白 WPF 中的 UserControl 有什么特别之处,以至于我没有找到合适的发件人。有人可以向我解释我错过了什么吗?

最佳答案

虽然这个问题很老,但我最近自己也遇到了类似的问题,涉及 ContextMenuOpening 事件。一些搜索产生了 UserControl 的源代码 here ,其中包含以下部分:

    // Set the EventArgs' source to be this UserControl 
internal override void AdjustBranchSource(RoutedEventArgs e)
{
e.Source=this;
}

因此,显然 UserControl 将任何路由事件的源设置为自身。我不知道为什么它会这样做,虽然......

关于UserControl 中的 WPF 路由事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com