Событие TabChanged TabControl в WPF
У меня есть TabControl в WPF. Я хочу найти событие, которое происходит при изменении вкладок. Как называется это событие?
3 ответов
на TabControl
наследует от Selector
, которая содержит SelectionChanged
событие.
<TabControl SelectionChanged="OnSelectionChanged" ... />
private void OnSelectionChanged(Object sender, SelectionChangedEventArgs args)
{
var tc = sender as TabControl; //The sender is a type of TabControl...
if (tc != null)
{
var item = tc.SelectedItem;
//Do Stuff ...
}
}
Я просто хочу добавить свою мысль. И я буду использовать прохладный ответ @pratap k, чтобы сделать это.
<TabControl x:Name="MyTab" SelectionChanged="TabControl_SelectionChanged">
<TabItem x:Name="MyTabItem1" Header="One"/>
<TabItem x:Name="MyTabItem2" Header="2"/>
<TabItem x:Name="MyTabItem3" Header="Three"/>
</TabControl>
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (MyTabItem1 !=null && MyTabItem1.IsSelected)
// do your staff
if (MyTabItem2 !=null && MyTabItem2.IsSelected)
// do your staff
if (MyTabItem3 !=null && MyTabItem3.IsSelected)
// do your staff
}
Как видите, разница заключается в добавлении проверки NULL
.
вот оно!
Я не получил выбранный ответ на работу, возможно, что-то изменилось, возможно, моя настройка отличается.
мои решения просты, вы бросаете отправителя, чтобы стать tabControle. Затем вы вытаскиваете выбранный TabItem (selectedValue) и бросаете его в TabItem.
в моей ситуации мне нужно знать," кто " изменился, поэтому я ищу имя TabItem, чтобы лучше реагировать на конкретный событие.
XAML
<TabControl SelectionChanged="OnTabItemChanged">
<TabItem Name="MainTap" Header="Dashboard"></TabItem
</TabControl>
C#
private async void OnTabItemChanged(object sender, SelectionChangedEventArgs e)
{
TabControl tabControl = sender as TabControl; // e.Source could have been used instead of sender as well
TabItem item = tabControl.SelectedValue as TabItem;
if (item.Name == "MainTap")
{
Debug.WriteLine(item.Name);
}
}