WPF TabControl控件-事件相關問題


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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM