2012-06-21 9 views
74

Ich bin neu bei wpf.Ich habe zwei Fenster wie window1 und window2. Ich habe eine Schaltfläche in window1. Wenn ich auf diese Schaltfläche klicke, muss sich das window2 öffnen. was soll ich dafür tun. Hier der Code was ich ausprobiert habe.Wie öffne ich das zweite Fenster vom ersten Fenster in WPF?

window2.show(); 
+4

Was haben Sie versucht? Es ist grundlegend, dass Sie durch Suchen finden können, es sei denn, Sie haben ein bestimmtes Problem, das Sie nicht erwähnt haben. – Reniuz

Antwort

154

Schreiben Sie Ihren Code in window1.

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

Kann ich diese Zeile auf Window_Loaded-Ereignis schreiben? Wenn ja, wird das zweite Fenster nicht angezeigt. –

+5

Es ist wahrscheinlich keine gute Idee, 'this.Close()' in ein Ereignis zu laden, das ein Fenster lädt. – StingyJack

2

das zweite Fenster Unter der Annahme, als public partial class Window2 : Window definiert ist, können Sie es nach:

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

ich möchte window2 von window1 öffnen. –

2

Sie können Taste in window1 und doppelklicken Sie darauf erstellen. Es wird neue Click-Handler erstellen, wo in dir so etwas schreiben kann:

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

Sie wollen erstellen Sie eine neue WPF-Anwendung. Sobald Sie dies getan haben, sollten Sie eine .xaml-Datei und eine .cs-Datei haben. Diese repräsentieren Ihr Hauptfenster. Erstellen Sie eine zusätzliche XAML-Datei und CS-Datei, um Ihr Unterfenster darzustellen.

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(); 
    } 
} 

Dann addieren, was zusätzlichen Code, den Sie zu diesen Klassen müssen:

SubWindow.xaml SubWindow.xaml.cs

+7

einfach genug! Ich hasse wpf, es ist nur so nutzlos kompliziert und entworfen, um kontra intuitiv zu sein. –

+13

Außer das ist falsch. Sie brauchen keine neue ganze Anwendung. Nur ein neues Fenster. –

5

In WPF haben wir einige Optionen mit Show() und ShowDialog() -Methode. Nun, wenn Sie das geöffnete Fenster zu schließen, wenn neue Fenster geöffnet werden, dann können Sie verwenden, anzeigen() -Methode

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

Showdialog() öffnet auch ein Fenster, aber in diesem Fall können Sie nicht Ihre zuvor geöffneten Fenster schließen.

1

Sie diesen Code verwenden können, Hoffnung helfen Ihnen

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

    } 

Thanks :)

2

Sie müssen wie so eine Instanz von einem neuen Fenster erstellen.

var window2 = new Window2(); 

Sobald Sie die Instanz haben, können Sie die Show() oder ShowDialog() Methode verwenden, je nachdem, was Sie tun möchten.

window2.Show(); 

oder

var result = window2.ShowDialog(); 

Showdialog() eine Nullable<bool> zurück, wenn Sie das brauchen.

4

Das hat mir geholfen: Die Owner-Methode bindet das Fenster im Grunde an ein anderes Fenster, falls Sie zusätzliche Fenster mit den gleichen benötigen.

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

Betrachten Sie dies auch.

this.WindowState = WindowState.Normal; 
this.Activate(); 
Verwandte Themen