WPF의 첫 번째 창에서 두 번째 창을 어떻게 열 수 있습니까?


125

WPF를 처음 사용합니다. window1과 window2와 같은 두 개의 창이 있습니다. window1에 버튼이 하나 있습니다. 이 버튼을 클릭하면 window2가 열려야합니다. 어떻게해야하나요?

내가 시도한 코드는 다음과 같습니다.

window2.show();

답변:


237

코드를 window1.

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

Window_Loaded 이벤트에이 줄을 쓸 수 있습니까? 그렇다면 두 번째 창이 표시되지 않습니다.
Manish Dubey 2015

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

15
충분히 간단합니다! 나는 wpf가 싫다. 쓸데없이 복잡하고 반 직관적으로 설계되었습니다.
Ren

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

5

두 번째 창이로 정의되어 있다고 가정하면 다음과 같이 public partial class Window2 : Window할 수 있습니다.

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

window1에서 window2를 열고 싶습니다.
ASHOK A

5

이것은 나를 도왔습니다. 소유자 방법은 기본적으로 동일한 창을 가진 추가 창을 원하는 경우 창을 다른 창에 연결합니다.

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 ()도 창을 열지 만이 경우 이전에 열린 창을 닫을 수 없습니다.


2

이와 같이 새 창의 인스턴스를 만들어야합니다.

var window2 = new Window2();

인스턴스가 있으면 수행하려는 작업에 따라 Show () 또는 ShowDialog () 메서드를 사용할 수 있습니다.

window2.Show();

또는

var result = window2.ShowDialog();

ShowDialog ()는 Nullable<bool>필요한 경우를 반환 합니다.


2

window1에서 버튼을 생성하고 더블 클릭 할 수 있습니다. 새로운 클릭 핸들러가 생성되며, 여기에서 다음과 같이 작성할 수 있습니다.

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

2

이 코드를 사용할 수 있습니다.

private void OnClickNavigate(object sender, RoutedEventArgs e)
{
    NavigatedWindow navigatesWindow = new NavigatedWindow();
    navigatesWindow.ShowDialog();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.