WPF TabControl / TabItem活动,非活动和关闭

时间:2011-12-21 22:20:16

标签: c# wpf tabcontrol

我正在尝试捕捉标签变为活动,停用和关闭的时间。 TabControl似乎没有任何我可以为这些场景捕获的事件。

我们的系统要求用户在用户离开标签页并转到该程序的其他部分时单击“保存”。 (如果他们对该选项卡上的数据进行了更改)。

有什么想法或建议吗?或者我可以使用的任何其他控件具有此功能吗?

谢谢,

麦克

3 个答案:

答案 0 :(得分:0)

尝试使用TabControl的 SelectionChanged 事件。这将为您提供当前标签的 SelectedItem SelectedIndex 属性。

答案 1 :(得分:0)

如果您的自定义类派生自TabItem,那么请说

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

        }


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

        }
}

您可以在里面处理选项卡的选择和取消选择。

答案 2 :(得分:0)

如果您将MVVM模式与ViewModel一起使用,并将viewmodels集合作为选项卡项,则可以在ViewModel中保留对ICollectionView的引用,如下所示:

public ICollectionView MyTabItemsCollectionView{ get; set; }

然后在构造函数中,设置它并为CurrentChanging事件

创建事件处理程序
MyTabItemsCollectionView= CollectionViewSource.GetDefaultView(MyTabItemsCollection);
MyTabItemsCollectionView.CurrentChanging += MyTabItemsCollectionViewCurrentChanging;

然后,在事件处理程序中,执行您需要的任何操作以阻止用户关闭它

void WorkspacesCollectionViewCurrentChanging(object sender, CurrentChangingEventArgs e)
{
    if (UserShouldNotBeAllowedToDoThis())
    {
        e.Cancel = true;
    }
}