2011-12-21 81 views
1

我试图捕获一个标签变为活动,无效和关闭。 TabControl似乎没有任何可以捕捉这些scenerios的事件。WPF TabControl/TabItem活动,无效和关闭

我们的系统要求用户在用户离开选项卡并转到程序的另一部分时单击“保存”。 (如果他们已经更改了该选项卡上的数据)。

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

感谢,

迈克

回答

0

尝试的SelectionChanged事件的TabControl的。这会为您提供SelectedItemSelectedIndex当前选项卡的属性。

0

如果您有从TabItem派生自定义类,比方说

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

     } 


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

     } 
} 

在里面你可以处理的标签的选择和去除选择。在

public ICollectionView MyTabItemsCollectionView{ get; set; } 

然后:

0

如果您使用的是有一个ViewModel MVVM模式,用的ViewModels为您标签项目的集合,你可以保持在视图模型一个ICollectionView的引用,这样构造函数,对于CurrentChanging事件设置和创建事件处理程序

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

然后,在事件处理程序,做任何你需要防止用户关闭它

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