我正在WPF中创建一个桌面应用程序。我正在尝试使用标签来显示多个页面。我没有使用MVVM。问题是,当我单击菜单项“ Student_Info”时,将创建一个新选项卡并显示“学生”页面。但是,当我切换到另一个选项卡并返回到“学生”选项卡时,“学生”页面将重新加载,并且所有表格数据都将丢失。如何解决这个问题。 请注意I am using this code中自定义标签项。 我的添加新标签的代码如下:
private void Menu_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
Frame frame = new Frame();
ClosableTab tabItem = new ClosableTab();
switch (btn.Tag)
{
case "Student":
pageStudent student = new pageStudent();
frame.Content = student;
tabItem.Title = "Student Info";
break;
case "Result":
pageResult result = new pageResult();
frame.Content = result;
tabItem.Title = "Result";
break;
}
tabItem.Content = frame;
tabControl1.Items.Add(tabItem);
tabItem.Focus();
}
答案 0 :(得分:1)
您的问题是,在Click事件处理程序中,您正在创建“学生”和“结果”页面的新实例。
您应该做的是在其他位置创建这两个页面(例如,在页面的Load
事件上),并且在菜单click事件中,您应该只切换到这些选项卡,而不是重新创建它们。
答案 1 :(得分:0)
我刚刚注意到,当我回到选项卡时,每次都会调用page_loaded事件,但不会调用page的构造函数。我已经停止使用第一个调用后通过使用标志执行的page_loaded事件代码,现在问题已解决。对我来说,每当标签页被选中时,都会调用页面加载事件。