页面正在WPF选项卡式文档界面中重新加载
我正在WPF中创建一个桌面应用程序。我正在尝试使用选项卡显示多个页面。我没有使用MVVM。问题是,当我点击一个菜单项,如Student_Info,就会创建一个新选项卡,并显示学生页面。但当我切换到另一个选项卡,回到学生选项卡时,学生页面被重新加载,表单的所有数据都丢失了。如何解决这个问题。 请注意自定义选项卡项。 我添加新选项卡的代码如下:页面正在WPF选项卡式文档界面中重新加载,wpf,Wpf,我正在WPF中创建一个桌面应用程序。我正在尝试使用选项卡显示多个页面。我没有使用MVVM。问题是,当我点击一个菜单项,如Student_Info,就会创建一个新选项卡,并显示学生页面。但当我切换到另一个选项卡,回到学生选项卡时,学生页面被重新加载,表单的所有数据都丢失了。如何解决这个问题。 请注意自定义选项卡项。 我添加新选项卡的代码如下: private void Menu_Click(object sender, RoutedEventArgs e) { Bu
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();
}
您的问题是,在单击事件处理程序中,您正在创建学生页面和结果页面的新实例
您应该做的是在页面的加载事件上的其他地方创建这两个页面,例如,在菜单单击事件中,您应该简单地切换到这些选项卡,而不是重新创建它们。我刚刚注意到,当我返回到选项卡时,每次都会调用页面加载事件,但不调用页面的构造函数。我已经使用标志停止了第一次调用后要执行的page_加载的事件代码,现在问题解决了。对我来说,每当tab被聚焦时调用page loaded事件是一件新鲜事。是的,我知道我必须修改此代码,以避免重新创建if tab。但此代码或按钮仅在第一次单击时创建新选项卡。但我说的是切换选项卡项的问题。此代码没有点击选项卡标题。我想说的是,有两个标签,一个是学生,第二个是结果。我在学生窗体上输入学生数据,并切换到结果选项卡,当我通过单击学生选项卡项目标题返回学生选项卡时,学生页面将重新加载,所有数据都将丢失。如果在选项卡的单击事件中没有执行任何操作,则不会发生这种情况。是否确实没有任何可能重新创建页面实例的内容?是,单击选项卡项时没有事件。只有关闭按钮单击事件才能关闭选项卡。我将此自定义选项卡项类用于选项卡项,无需任何修改。我刚刚注意到,当我回到tab时,调用了页面加载事件,但没有调用页面的构造函数。我已经使用标志停止了在第一次调用后运行的页面加载事件代码,现在问题已经解决。对于我来说,页面加载事件在每次选项卡聚焦时都会被调用,这是加载事件的标准行为,每次呈现元素时都会被调用。也许可以将逻辑迁移到已初始化的事件。查看有关这些事件的更多信息。