WPF TabControl控件-事件相关问题
2016-04-18 16:14 孙启亮 阅读(8005) 评论(0) 编辑 收藏 举报TabControl控件的TabItem的Content元素,例如:DataGrid控件,在对事件的处理时,需要对事件的源引起关注,当需要处理DataGrid的事件时,事件会传递到TabControl中,解决这种问题的方法如下:
方法一:判断触发此事件的源是谁,根据事件的源再做相应处理
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.Source is TabControl) { //do something } }
方法二:注册DataGrid等相应控件的相应事件,使其不再向上传递
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { e.Handled = true; }
引发问题扩展: 无法动态设置当前项。。
例如: 如果在需要使用TabItem的内容元素DataGrid的双击事件时,
void dataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { //do something }
如果没有加上e.Handled = true; 这句, 而此时恰恰我们需要动态改变TabControl的选择项时,我们会面对这样一个问题,无论我们怎么改变下面这个值,它的值总会变为我们处理双击事件时的Item页面中。
this.tabControl.SelectedItem = newTabItem;