2011-12-21 3 views
1

Я пытаюсь захватить, когда вкладка становится активной, деактивированной и закрывающей. TabControl, похоже, не имеет каких-либо событий, которые я могу использовать для этих сценариев.WPF TabControl/TabItem Active, Deactive и Closing

Наша система требует, чтобы пользователь нажал кнопку «Сохранить», когда пользователь покидает вкладку и переходит в другую часть программы. (Если они внесли изменения в данные на этой вкладке).

Любые мысли или предложения? или Любые другие элементы управления, которые я мог бы использовать вместо этого, которые имеют эту функциональность?

Спасибо,

Майк

ответ

0

Попробуйте SelectionChanged событие TabControl. Это даст вам SelectedItem и SelectedIndex Свойства текущей вкладки.

0

Если у вас есть свой собственный класс, производный от TabItem, скажем

public class MyTabItem : TabItem 
{ 
     protected override void OnSelected(RoutedEventArgs e) 
     { 
      base.OnSelected(e); 

     } 


     protected override void OnUnselected(RoutedEventArgs e) 
     { 
      base.OnUnselected(e); 

     } 
} 

Внутри вы можете обрабатывать выбор и unselection вкладки.

0

Если вы используете шаблон MVVM с ViewModel, с коллекцией ViewModels как ваши вкладки элементов, вы можете сохранить ссылку на ICollectionView в ViewModel, как это:

public ICollectionView MyTabItemsCollectionView{ get; set; } 

Тогда в конструктор, установить его и создавать обработчики событий для события CurrentChanging

MyTabItemsCollectionView= CollectionViewSource.GetDefaultView(MyTabItemsCollection); 
MyTabItemsCollectionView.CurrentChanging += MyTabItemsCollectionViewCurrentChanging; 

Затем в обработчике события, делать все, что вам нужно, чтобы запретить пользователю закрыть его

void WorkspacesCollectionViewCurrentChanging(object sender, CurrentChangingEventArgs e) 
{ 
    if (UserShouldNotBeAllowedToDoThis()) 
    { 
     e.Cancel = true; 
    } 
} 
Смежные вопросы