关闭托管页面

时间:2016-06-28 10:38:09

标签: c# wpf windows xaml

我正在学习C#WPF。 现在我只想了解导航的工作原理。

我创建了一个包含2个按钮的测试应用。 一个导航到下一页,另一个导航到新窗口。

页面之间的导航不是问题。 我能够使用按钮从page1导航到page2。下面的代码写在我的Page1.xaml.cs

private void button_Click(object sender, RoutedEventArgs e)
    {
        Page2 p2 = new Page2();
        this.NavigationService.Navigate(p2);
    }

问题是当我尝试打开一个新窗口并用一个按钮关闭前一个窗口时,它不起作用。 (我也在我的Page1.xaml.cs上写了这个)

private void button_Copy_Click(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();
        win1.Show();
        this.Close();
    }

它给我一个错误代码CS1061并告诉我它没有包含' close'的定义.....

以下是我的Page1.xaml.cs的完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Page1.xaml
    /// </summary>
    public partial class Page1 : Page
    {
        public Page1()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            Page2 p2 = new Page2();
            this.NavigationService.Navigate(p2);
        }

        private void button_Copy_Click(object sender, RoutedEventArgs e)
        {
            Window1 win1 = new Window1();
            win1.Show();
            this.Close();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

这是一个猜测,因为我还没有看到足够的代码。如果调用 this.Close()放在外面定义您要关闭的窗口的类,则范围内没有这样的方法

答案 1 :(得分:0)

我想出了一个解决方法。您可以做的是在托管页面的窗口底部创建一个按钮,然后从该按钮中设置“打开新窗口”并在单击时关闭属性。 (如果要关闭页面并打开新窗口)。

这是我的意思

<Grid>
    <!--Your page frame -->
    <Frame Name="buildcaseFrame" NavigationUIVisibility="Hidden" />

    <!--This button will appear on all the pages-->
    <!--You can choose where to place the button-->
    <StackPanel VerticalAlignment="Bottom">
        <Button x:Name="closeButton" ToolTip="Go Back to Main Menu Without Saving" Cursor="Hand" Content="Cancel" Click="closeButton_Click"/>
    </StackPanel>
</Grid>

这将允许您关闭页面并打开新窗口。像这样...

private void closeButton_Click(object sender, RoutedEventArgs e)
{
    Window1 win1 = new Window1();
    win1.Show();
    this.Close();
}