Как открыть второе окно из первого в WPF?

125

Я новичок в WPF. У меня есть два окна, например window1 и window2. У меня одна кнопка в окне1. Если я нажму эту кнопку, должно открыться window2. Что мне для этого делать?

Вот код, который я пробовал:

window2.show();
АШОК А
источник

Ответы:

237

Напишите свой код в формате window1.

private void Button_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
Чандру А
источник
Могу я написать эту строку в событии Window_Loaded? Если да, то второе окно не отображается.
Manish Dubey,
37

Когда вы создали новое приложение 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
TokyoMike
источник
15
достаточно просто! Я ненавижу wpf, он настолько бесполезно сложен и спроектирован так, чтобы противоречить интуиции.
Ren
17
private void button1_Click(object sender, RoutedEventArgs e)
{
    window2 win2 = new window2();
    win2.Show();
}
KF2
источник
5

Предполагая, что второе окно определено как public partial class Window2 : Window, вы можете сделать это следующим образом:

Window2 win2 = new Window2();
win2.Show();
Владислав Зоров
источник
я хочу открыть window2 из window1.
ASHOK A
5

Это помогло мне: метод Owner в основном привязывает окно к другому окну на случай, если вам нужны дополнительные окна с такими же.

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

Учтите и это.

this.WindowState = WindowState.Normal;
this.Activate();
Джандре Ван Дайк
источник
5

В WPF у нас есть несколько вариантов с использованием методов Show () и ShowDialog ().

Что ж, если вы хотите закрыть открытое окно, когда открывается новое окно, вы можете использовать метод Show ():

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

ShowDialog () также открывает окно, но в этом случае вы не можете закрыть ранее открытое окно.

user1399377
источник
2

Вам нужно будет создать такой экземпляр нового окна.

var window2 = new Window2();

Если у вас есть экземпляр, вы можете использовать метод Show () или ShowDialog () в зависимости от того, что вы хотите сделать.

window2.Show();

или

var result = window2.ShowDialog();

ShowDialog () вернет, Nullable<bool>если вам это нужно.

Джефф
источник
2

Вы можете создать кнопку в window1 и дважды щелкнуть по ней. Он создаст новый обработчик кликов, внутри которого вы можете написать что-то вроде этого:

var window2 = new Window2();
window2.Show();
LadislavM
источник
2

Вы можете использовать этот код:

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
ibmstafa
источник