WPF TabControl / TabItem активен, деактивирован и закрывается - PullRequest
1 голос
/ 22 декабря 2011

Я пытаюсь сделать снимок, когда вкладка становится активной, неактивной и закрывается.Похоже, что в TabControl нет событий, которые я могу отследить для этих сценариев.

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

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

Спасибо,

Майк

Ответы [ 3 ]

0 голосов
/ 22 декабря 2011

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

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

        }


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

        }
}

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

0 голосов
/ 22 декабря 2011

Если вы используете шаблон MVVM с ViewModel, с коллекцией ViewModel в качестве элементов вкладки, вы можете сохранить ссылку на 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;
    }
}
0 голосов
/ 22 декабря 2011

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

...