我正在学习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();
}
}
}
答案 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();
}