2012-03-12 70 views
1

每当用户切换到另一个tabitem时,我需要将数据保存在不同的TabItem中。TabControl保存选定的选项卡项目已更改

我尝试操作TabControl.SelectionChanged事件,但没有关于先前选择的选项卡项目的信息。

那么,如何让用户从我的TabItem切换到另一个时刻?

+0

使用未选定的事件,e.TabPage给你,你正在寻找的参考。或者取消选择是否有理由取消它。 – 2012-03-12 13:23:48

+0

如果可能的话,WPF'TabControl'将重新使用'TabItem'模板,所以实际的控件不会改变,但控件后面的'DataContext'会改变。如果您想在切换标签页时保存控件中存储的数据,则需要将其绑定到某些内容。 – Rachel 2012-03-12 13:54:26

回答

1

你可以做一个全局变量来存储的是最后一个标签

private TabPage LastTab = null; 

private void tabSelectionChanged(...) 
{ 
    if(LastTab != null) 
    //Do save 

    LastTab = tab.SelectedTabPage;// or equivalent 
} 
0

使用下面的代码:

private object LastTab = null; 

private void tabSelectionChanged(...) 
{ 
    if(LastTab != null) 
    { 
    //Do save 
    } 

    LastTab = control.SelectedContent; 
} 

这里的内容将是类型的对象,你可以类型转换为并执行保存操作

3

使用各个选项卡的Enter和Leave事件。如果您需要在代码启动时触发输入事件,则可能需要以编程方式将选定选项卡更改为与设计时不同的选项卡。

+0

这是一个非常粗糙的黑客,无论如何都应该避免。 – mafu 2012-10-28 17:34:40

0

你需要在参数SelectionChangedEventArgs e存在:

  • e.AddedItems
  • e.RemovedItems
相关问题