我是 WPF 的新人。我有两个窗口,例如 window1和 window2。我在窗口1有一个按钮。如果我点击那个按钮,窗口2必须打开。我该怎么做?
下面是我试过的代码:
window2.show();
假设第二个窗口被定义为 public partial class Window2 : Window,您可以通过:
public partial class Window2 : Window
Window2 win2 = new Window2(); win2.Show();
您可以在 window1中创建一个按钮并双击它。它将创建一个新的 click 处理程序,在其中你可以写下如下内容:
var window2 = new Window2(); window2.Show();
private void button1_Click(object sender, RoutedEventArgs e) { window2 win2 = new window2(); win2.Show(); }
创建了新的 WPF 应用程序后,应该有一个。Xaml 文件和一个。Cs 文件。这些代表您的主窗口。创建一个额外的.xaml 文件和.cs 文件来表示您的子窗口。
<Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="Open Window" Click="ButtonClicked" Height="25" HorizontalAlignment="Left" Margin="379,264,0,0" Name="button1" VerticalAlignment="Top" Width="100" /> </Grid> </Window>
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void ButtonClicked(object sender, RoutedEventArgs e) { SubWindow subWindow = new SubWindow(); subWindow.Show(); } }
然后向这些类添加您需要的其他代码:
SubWindow.xaml SubWindow.xaml.cs
用 window1写代码。
window1
private void Button_Click(object sender, RoutedEventArgs e) { window2 win2 = new window2(); win2.Show(); }
在 WPF 中,通过使用 Show ()和 ShowDialog ()方法,我们有两个选项。
如果你想在新窗口打开时关闭打开的窗口,那么你可以使用 Show ()方法:
Window1 win1 = new Window1(); win1.Show(); win1.Close();
ShowDialog ()也会打开一个窗口,但在这种情况下,您无法关闭先前打开的窗口。
您可以使用以下代码:
private void OnClickNavigate(object sender, RoutedEventArgs e) { NavigatedWindow navigatesWindow = new NavigatedWindow(); navigatesWindow.ShowDialog(); }
您将需要创建一个新窗口的实例,如下所示。
var window2 = new Window2();
一旦有了实例,就可以根据需要使用 秀()或 ShowDialog ()方法。
window2.Show();
或者
var result = window2.ShowDialog();
如果需要,ShowDialog ()将返回 Nullable<bool>。
Nullable<bool>
这对我有帮助: Owner 方法基本上将窗口绑定到另一个窗口,以防您需要具有相同窗口的额外窗口。
LoadingScreen lc = new LoadingScreen(); lc.Owner = this; lc.Show();
你也考虑一下。
this.WindowState = WindowState.Normal; this.Activate();