WPF 윈도우 객체의 활성화(Show) 상태 확인 방법?

윈도가 닫힌 속성이 있으면 좋으련만 없는것 같네요;

가장 일반적인 방법은,

    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 목록에서 제거될 것이므로 동일한 동작을 하게 됩니다.

4개의 좋아요