2012-06-21 9 views
74

Jestem nowy w WPF. Mam dwa okna, takie jak window1 i window2. Mam jeden przycisk w oknie1. jeśli kliknę ten przycisk, okno 2 musi się otworzyć. co powinienem zrobić w tym przypadku. Oto kod, który próbowałem.Jak otworzyć drugie okno z pierwszego okna w WPF?

window2.show(); 
+4

Co próbowaliście? Jest to podstawowa rzecz, którą można znaleźć, wyszukując, chyba że masz konkretny problem, o którym nie wspomniałeś. – Reniuz

Odpowiedz

154

Wpisz swój kod w window1.

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

Czy mogę zapisać ten wiersz w zdarzeniu Window_Loaded? Jeśli tak, to drugie okno nie jest wyświetlane. –

+5

Umieszczenie 'this.Close()' w dowolnym załadunku okna prawdopodobnie nie jest dobrym pomysłem. – StingyJack

2

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

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

Chcę otworzyć window2 z window1. –

2

przycisku w oknie Window1 i podwójne kliknięcia można stworzyć na nim. Stworzy nową obsługi click, gdzie wewnątrz można napisać coś takiego:

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

Będziemy chcieli, aby utworzyć nową aplikację WPF. Gdy to zrobisz, powinieneś mieć plik .xaml i plik .cs. Są to twoje główne okno. Utwórz dodatkowy plik .xaml i plik .cs, który będzie reprezentować twoje okno podrzędne.

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 dodać cokolwiek dodatkowy kod trzeba tych klasach:

SubWindow.xaml SubWindow.xaml.cs

+7

proste! Nienawidzę wpf, jest tak bezużytecznie skomplikowany i zaprojektowany, by przeciwstawiać się intencji. –

+13

Poza tym, że jest źle. Nie potrzebujesz nowej aplikacji. Tylko nowe okno. –

5

W WPF mamy kilka opcji przy użyciu metody Show() i ShowDialog(). Cóż, jeśli chcesz, aby zamknąć otwarte okno, gdy nowe okno dostaje otwarty następnie można użyć Show() metoda

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

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

1

można użyć tego kodu, nadzieję, że pomoże

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

    } 

Thanks :)

2

Trzeba będzie utworzyć wystąpienie w nowym oknie jak tak.

var window2 = new Window2(); 

Gdy masz instancji można 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 potrzeba.

4

To pomogło mi: Sposób Właściciel zasadzie więzi okno do innego okna w przypadku, gdy chcesz dodatkowe okna z tymi samymi.

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

Rozważ to również.

this.WindowState = WindowState.Normal; 
this.Activate(); 
Powiązane problemy