wpf
Visual studio에서 wpf 프로그램을 실행할때 window가 두개 뜰때가 있다.
App.xaml
<Application x:Class="Trading.WPFClient.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Trading.WPFClient"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
App.xaml.cs
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
MainWindow = new MainWindow()
{
DataContext = new MainViewModel()
};
MainWindow.Show();
base.OnStartup(e);
}
}
StartupUri="MainWindow.xaml"은 application 시작 시 해당 UI를 자동으로 보여준다. 그런데 OnStartup에서도 new MainWindow()를 만들고 Show()를 호출하고 있으니 window가 두 개 생긴다.
둘 중 하나를 없애주면 된다. 보통은 StartupUri를 쓰거나, StartupUri를 지우고 OnStartup에서 직접 window를 만들거나 둘 중 하나만 선택한다.
Problem With WPF C# App Spawning Two Main Windows
Ref
- Application.StartupUri: https://learn.microsoft.com/en-us/dotnet/api/system.windows.application.startupuri
- Application.MainWindow: https://learn.microsoft.com/en-us/dotnet/api/system.windows.application.mainwindow
- Application.OnStartup: https://learn.microsoft.com/en-us/dotnet/api/system.windows.application.onstartup