Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面正在WPF选项卡式文档界面中重新加载_Wpf - Fatal编程技术网

页面正在WPF选项卡式文档界面中重新加载

页面正在WPF选项卡式文档界面中重新加载,wpf,Wpf,我正在WPF中创建一个桌面应用程序。我正在尝试使用选项卡显示多个页面。我没有使用MVVM。问题是,当我点击一个菜单项,如Student_Info,就会创建一个新选项卡,并显示学生页面。但当我切换到另一个选项卡,回到学生选项卡时,学生页面被重新加载,表单的所有数据都丢失了。如何解决这个问题。 请注意自定义选项卡项。 我添加新选项卡的代码如下: private void Menu_Click(object sender, RoutedEventArgs e) { Bu

我正在WPF中创建一个桌面应用程序。我正在尝试使用选项卡显示多个页面。我没有使用MVVM。问题是,当我点击一个菜单项,如Student_Info,就会创建一个新选项卡,并显示学生页面。但当我切换到另一个选项卡,回到学生选项卡时,学生页面被重新加载,表单的所有数据都丢失了。如何解决这个问题。 请注意自定义选项卡项。 我添加新选项卡的代码如下:

    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时,调用了页面加载事件,但没有调用页面的构造函数。我已经使用标志停止了在第一次调用后运行的页面加载事件代码,现在问题已经解决。对于我来说,页面加载事件在每次选项卡聚焦时都会被调用,这是加载事件的标准行为,每次呈现元素时都会被调用。也许可以将逻辑迁移到已初始化的事件。查看有关这些事件的更多信息。