在我的應用程序中,我使用WPF TabControl
我想處理TabItem
的單擊事件。 我如何實現它?如何處理WPF中的TabItem單擊事件?
回答
將標題封裝在無模板按鈕中。
如果您使用的ItemsSource:
<TabControl ItemsSource="{Binding Data}">
<TabControl.ItemTemplate>
<DataTemplate>
<Button Click="Tab_Click">
<Button.Template>
<ControlTemplate>
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<Button.Content>
<!-- Actual header goes here -->
</Button.Content>
</Button>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
如果你有靜態的內容,你可以將其插入頭部右走:
<TabControl>
<TabItem>
<TabItem.Header>
<Button Click="Tab_Click">
<Button.Template>
<ControlTemplate>
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<Button.Content>
<!-- Actual header goes here -->
</Button.Content>
</Button>
</TabItem.Header>
</TabItem>
</TabControl>
您可以通過添加標籤,這樣做到tabcontrol中每個tabitem的header屬性。然後你可以爲標籤設置一個事件。
XAML
<TabControl Height="100" HorizontalAlignment="Left" Name="tabControl1">
<TabItem Name="tabItem1">
<TabItem.Header>
<Label Content="tabItem1"
MouseLeftButtonDown="tabItem1_Clicked"
HorizontalAlignment="Stretch"/>
</TabItem.Header>
<Grid />
</TabItem>
<TabItem Name="tabItem2">
<TabItem.Header>
<Label Content="tabItem2"
MouseLeftButtonDown="tabItem2_Clicked"
HorizontalAlignment="Stretch"/>
</TabItem.Header>
<Grid />
</TabItem>
</TabControl>
C#/代碼背後
private void tabItem1_Clicked(object sender, MouseButtonEventArgs e)
{
//DO SOMETHING
}
private void tabItem2_Clicked(object sender, MouseButtonEventArgs e)
{
//DO SOMETHING
}
希望這有助於。
這是一個古老的問題,但我在相同的情況下找到答案。
我用的TabControl的(XAML)SelectionChanged事件
<TabControl SelectionChanged="TabControl_SelectionChanged">
後面的代碼(C#):
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Stuff
}
這不是點擊自己,而是其令人耳目一新的東西的工作..
這種類型的解決方案給了我一個問題,因爲只要tabcontrol中的控件改變選擇,它就會觸發,而不僅僅是tabcontrol本身的選擇。 – 2015-07-14 22:30:14
嘗試使用GotFocus
事件查找解決方案。
private void addTabPage_GotFocus(object sender, RoutedEventArgs e)
{
addTabPage(); //method for adding page
TabControlPages.SelectedIndex = TabControlPages.Items.Count - 1; //select added page
TabControlPages.Focus(); //change forcus to selected page
}
方法也添加頁面(例如剛)
private void addTabPage()
{
TabItem tc = new TabItem();
tc.Header = "New page";
TabControlPages.Items.Insert(TabControlPages.Items.Count - 1, tc); //insert new page
}
希望這將是有益的
可以在TabControl的使用SelectionChanged事件,並使用開關的情況下做任何你喜歡的。
// XAML代碼
<TabControl SelectionChanged="TabControl_SelectionChanged">
<TabItem Header="Item1"></TabItem>
<TabItem Header="Item2"></TabItem>
<TabItem Header="Item3"></TabItem>
</TabControl>
//後臺代碼
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string tabItem = ((sender as TabControl).SelectedItem as TabItem).Header as string;
switch(tabItem)
{
case "Item1":
break;
case "Item2":
break;
case "Item3":
break;
default:
return;
}
}
您可以通過添加標籤的標題屬性在TabControl的每個 TabItem的做到這一點。然後你可以爲標籤設置一個事件。
該解決方案工作得很好;但是,「標籤」具有邊距屬性,可以防止「MouseLeftButtonDown」處理程序被觸發,除非用戶單擊標籤時不起作用。此外,由於標籤填充,看起來其他選項卡的樣式會受到影響。
您可以通過覆蓋標籤的默認邊距/填充屬性來緩解這種情況......或者甚至更簡單地使用TextBlock。
<TabItem x:Name="tabItem1" >
<TabItem.Header>
<TextBlock MouseLeftButtonDown="tabItem1_Click">
Click Me
</TextBlock>
</TabItem.Header>
...
</TabItem>
- 1. WPF-MVVM:在視圖模型中的TabItem頭單擊事件處理
- 2. WPF:如何處理單獨文件中的DataTemplate中的事件?
- 3. 如何處理WPF DataTemplate中的事件?
- 4. DataGrid裏面的TabItem事件處理
- 5. 我如何處理WPF中的數據綁定菜單中的點擊事件
- 6. 如何處理WPF中的鼠標滾輪點擊事件?
- 7. 處理DataGridHyperlinkColumn單擊事件
- 8. 在已禁用的WPF中處理單擊事件或MouseDown StackPanel
- 9. WPF中的事件處理
- 10. 如何處理wpf中的網格項上的右鍵單擊事件?
- 11. WPF TabItem元素MouseClick事件
- 12. 如何處理單擊WPF網格
- 13. 與變量處理中單擊事件
- 14. 在django-tables2中處理單擊事件
- 15. 如何在WPF上下文中引用右鍵單擊的對象菜單項單擊事件處理程序?
- 16. 如何處理單擊RichTextBox中的超鏈接的事件
- 17. 如何處理我的類中的單擊事件
- 18. 處理菜單項單擊事件 - Android
- 19. 如何處理jQuery網格中的行單擊事件
- 20. 如何處理jquery中的單擊事件
- 21. 如何處理angular.js中的右鍵單擊事件?
- 22. 如何處理win32 API中的單擊事件?
- 23. 如何處理ListCtrl標題中的右鍵單擊事件?
- 24. 如何處理UISplitView嵌套控制器中的單擊事件
- 25. 如何處理DataGridViewLinkColumn的點擊事件
- 26. WPF:如何處理和再泡事件
- 27. jQuery的單擊事件處理
- 28. 的JavaScript單擊事件處理
- 29. Z訂單和事件處理wpf
- 30. 如何處理自定義gwt小部件的單擊事件
如果我們還要設置標籤的* Content *屬性,我們是否需要設置標籤的*名稱*? – 2015-01-01 21:18:38
不,不需要TabItem的名稱。只要Label具有關聯的單擊事件處理程序,它就可以工作。 – 2015-01-01 23:20:29