WPF TabControl 下的grid内Button 鼠标点击事件

WPF我添加了一个TabControl,并且有两个tabItem,每个tabItem的grid下有Button;结构如下图:然后我无论在最外层的root(Grid),还是... WPF 我添加了一个TabControl,并且有两个tabItem,每个tabItem的grid下有Button;结构如下图:

然后我无论在最外层的root(Grid),还是tab(TabControl本身),还是内部的it1,it2上面绑定 MouseLeftButtonUp 事件,当单击其他地方的时候都能触发事件,但就是单击btn1,btn2(内部Button)的时候不会触发事件。为什么会这样。有什么样的解决办法吗
展开
 我来答
你猜我猜哇擦猜
推荐于2016-04-15 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2万
采纳率:0%
帮助的人:6620万
展开全部
出现 XXX_Click_1 的原因:
在设计器上点击按钮自动生成了 XXX_Click 函数,因某个操作 (删除控件后再次添加) 导致 XAML 中 Click="XXX_Click" 代码丢失,然后再次点击按钮而自动生成的。

解决办法很简单,在 XAML 代码编辑器中找到 XXX 然后将 Click="XXX_Click_1" 改成 "XXX_Click" 就可以了。也就是说,可以先定义事件处理函数,然后再为一个或多个控件指定。

RoutedEventArgs 和 EventArgs 不能随意替换。

Route 的意思就是路由,在 WPF 中引入了事件路由这一概念,举个例子比较好理解一点:

窗口中有一系列的控件 Grid\StackPanel\Button 等,

在 WinForm 中:当 Button 的 MouseMove 事件被触发时,其父级控件 (StackPanel、Grid、Form) 是不会触发 MouseMove 事件的。

WPF 中:会因路由概念的引入,导致 Button 的所有父级控件触发 MouseMove 事件,当然,前提是在代码中指定了事件函数。

所以,我们需要 RoutedEventArgs 这个参数,从 e.Source、e.OriginalSource 来确定该事件是由哪个子控件触发的。由于 WPF 控件是由 ControlTemplate 定义的,所以,单个控件也会需要事件路由来确定,该控件的模板中哪个元素引发了事件,从而精确处理控件事件。
merlindlut
2015-07-28 · TA获得超过422个赞
知道小有建树答主
回答量:945
采纳率:0%
帮助的人:406万
展开全部
点击鼠标事件不是你说的MouseLeftButtonUp,需要绑定Click事件,点击才会有效
追问
Grid或者tabControl  不支持click事件吧。所以我才用的MouseLeftButtonUp代替click
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式