Jak otworzyć drugie okno z pierwszego okna w WPF?


125

Jestem nowy w WPF. Mam dwa okna, takie jak window1 i window2. Mam jeden przycisk w window1. Jeśli kliknę ten przycisk, okno 2 musi się otworzyć. Co mam z tym zrobić?

Oto kod, który wypróbowałem:

window2.show();

Odpowiedzi:


237

Wpisz swój kod window1.

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

Czy mogę napisać tę linię w zdarzeniu Window_Loaded? Jeśli tak, to drugie okno nie jest wyświetlane.
Manish Dubey

37

Po utworzeniu nowej aplikacji WPF powinieneś mieć plik .xaml i plik .cs. Reprezentują twoje główne okno. Utwórz dodatkowy plik .xaml i .cs, które będą reprezentować Twoje podokno.

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

Następnie dodaj dowolny dodatkowy kod, którego potrzebujesz do tych klas:

SubWindow.xaml
SubWindow.xaml.cs

15
wystarczająco proste! Nienawidzę wpf, jest po prostu tak bezużytecznie skomplikowany i zaprojektowany, aby przeciwdziałać.
Ren

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

5

Zakładając, że drugie okno jest zdefiniowane jako public partial class Window2 : Window, możesz to zrobić poprzez:

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

chcę otworzyć window2 z window1.
ASHOK A,

5

To mi pomogło: Metoda Owner w zasadzie wiąże okno z innym oknem na wypadek, gdybyś chciał mieć dodatkowe okna z tymi samymi oknami.

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

Rozważ to również.

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

5

W WPF mamy kilka opcji przy użyciu metod Show () i ShowDialog ().

Cóż, jeśli chcesz zamknąć otwarte okno, gdy zostanie otwarte nowe okno, możesz użyć metody Show ():

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

ShowDialog () również otwiera okno, ale w tym przypadku nie można zamknąć wcześniej otwartego okna.


2

Będziesz musiał utworzyć wystąpienie nowego okna, takiego jak to.

var window2 = new Window2();

Gdy już masz instancję, możesz użyć metody Show () lub ShowDialog () w zależności od tego, co chcesz zrobić.

window2.Show();

lub

var result = window2.ShowDialog();

ShowDialog () zwróci, Nullable<bool>jeśli tego potrzebujesz.


2

Możesz utworzyć przycisk w window1 i kliknąć go dwukrotnie. Utworzy nowy moduł obsługi kliknięć, w którym możesz napisać coś takiego:

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

2

Możesz użyć tego kodu:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.