앞서
https://velog.io/@yu_oolong/C-WPF-Button을-눌러-Frame에-Page-띄우기-1
https://velog.io/@yu_oolong/C-WPF-Button을-눌러-Frame에-Page-띄우기-2
에서 MainWindow를 싱글톤 패턴으로 작성하기
.
.
.
private void SelectMenu1()
{
ResetAllMenus();
IsMenu1Selected = true;
MainWindow mainWindow = MainWindow.GetInstance();
if (mainWindow != null)
{
mainWindow.Content.Source = new Uri("Page1.xaml", UriKind.Relative);
}
}
public partial class MainWindow : Window
{
private static MainWindow _Instance = null;
public MainWindowModel MainWM { get; } = new MainWindowModel();
public int _LoginIdx;
public static MainWindow GetInstance()
{
if (_Instance == null || !_Instance.IsLoaded)
{
_Instance = new MainWindow();
}
return _Instance;
}
public MainWindow()
{
InitializeComponent();
var viewModel = new MainWindowModel();
DataContext = viewModel;
}
GetInstance()는 MainWindow가 필요할 때마다 인스턴스를 생성하는게 아닌 이미 만들어진 인스턴스를 가져다 쓰기 위한 싱글톤 패턴으로 작성된 메소드이다.
InitializeComponent();는 해당 Window 또는 Page에 배치한 UI Control들을 생성하는 역할을 한다.
Microsoft의 InitializeComponent()에 대한 설명 링크
InitializeComponent(); 는 구성 요소의 컴파일된 페이지를 로드하는 메소드라고 한다.