윈도가 닫힌 속성이 있으면 좋으련만 없는것 같네요;
가장 일반적인 방법은,
public partial class ExplorerWindow : Window
{
public bool IsClosed { get; private set; }
public ExplorerWindow()
{
InitializeComponent();
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
IsClosed = true;
OnClosed()
에서 속성값을 바꿔줘서,
private void Button_Click(object sender, RoutedEventArgs e)
{
if (win == null || win.IsClosed == true)
{
win = new ExplorerWindow();
win.Show();
}
}
이렇게 사용하는 방식이 있겠고요,
구글링을 해보니 다음의 정보들이 나옵니다.
PresentationSource.FromVisual(win) == null
win이 Closed 되었으면, PresentationSource
도 얻을 수 없으므로 동일한 동작을 하게 됩니다.
Application.Current.Windows.Cast<Window>().Contains(win) == false
win이 Closed 되었으면, Application.Current.Windows 목록에서 제거될 것이므로 동일한 동작을 하게 됩니다.