2012-06-21 121 views
74

我是新来的wpf.I有两个窗口,比如window1和window2。我在window1中有一个按钮。如果我点击那个按钮,window2必须打开。我应该为此做些什么。这是我试过的代码。如何从wpf的第一个窗口打开第二个窗口?

Window2 win2 = new Window2(); 
win2.Show(); 
+4

你有什么试过的?除非你有特别的问题,否则你可以通过搜索找到基本的东西。 – Reniuz

回答

154

window1中写下您的代码。

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    window2 win2 = new window2(); 
    win2.Show(); 
    this.Close(); 
} 
+0

我可以在Window_Loaded事件上写这行吗?如果是这样,那么第二个窗口不显示。 –

+5

把'this.Close()'放在任何窗口加载事件中可能不是一个好主意。 – StingyJack

2

假设第二个窗口被定义为public partial class Window2 : Window,你可以做到这一点。这将创造新的Click处理程序,在里面你可以写这样的事情:

var window2 = new Window2(); 
window2.Show(); 
+0

我想从window1打开window2。 –

2

您可以在其上创建的窗口1按钮,双击:

window2.show(); 
15
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    window2 win2 = new window2(); 
    win2.Show(); 
} 
25

你要创建一个新的WPF应用程序。一旦你完成了这个,你应该有一个.xaml文件和一个.cs文件。这些代表您的主窗口。创建一个额外的.xaml文件和.cs文件来表示您的子窗口。

MainWindow.xaml

<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> 

MainWindow.xaml.cs

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

+7

够简单!我讨厌wpf,它只是非常复杂而且被设计为反直觉。 –

+13

除了这是错的。你不需要一个新的整个应用程序。只是一个新窗口。 –

5

在WPF中,我们通过使用Show()和ShowDialog()方法有几个选项。 那么,如果你想关闭打开的窗口时,新窗口得到开放的,那么你可以使用Show()方法

Window1 win1 = new Window1(); 
win1.Show(); 
win1.Close(); 

的ShowDialog()也打开一个窗口,但在这种情况下,你不能关闭先前打开的窗口。

1

您可以使用此代码,希望能帮助你

private void OnClickNavigate(object sender, RoutedEventArgs e) 
    { 
     NavigatedWindow navigatesWindow = new NavigatedWindow(); 
     navigatesWindow.ShowDialog(); 

    } 

谢谢:)

2

你需要像这样创建一个新窗口的一个实例。

var window2 = new Window2(); 

一旦你的情况下,你可以根据你想要做什么用的Show()ShowDialog()方法。

window2.Show(); 

var result = window2.ShowDialog(); 

的ShowDialog()将返回一个Nullable<bool>如果你需要。

4

这帮了我: 所有者方法基本上将窗口绑定到另一个窗口,以防您想要额外的窗口使用相同的窗口。

LoadingScreen lc = new LoadingScreen(); 
lc.Owner = this; 
lc.Show(); 

请考虑这一点。

this.WindowState = WindowState.Normal; 
this.Activate(); 
相关问题