WPF 单例窗口

首先在主窗体中将菜单关联的窗体实例化。

第二步:将每个菜单对应窗体的closing事件重写。之所以要重写closing事件,是因为在菜单对应的窗口关闭之后,再次打开就会报错

第三步:在主窗体中菜单事件里面进行判断处理

示例:

public partial class main : Window
    {
        //实例化关联的窗口
        MainWindow m = new MainWindow();

        public main()
        {
            InitializeComponent();
        }

        //事件调用
        private void button_Click(object sender, RoutedEventArgs e)
        {
            if (m == null || m.IsVisible == false)
            {
                m.Show();
            }
            else
            {
                m.Activate();
                m.WindowState = WindowState.Normal;
            }
        }

        //重写Closing方法
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }
    }

如果有朋友找到了更好的方法,望赐教和分享。

posted @ 2016-09-21 16:49  苏州城外的微笑  阅读(2929)  评论(0编辑  收藏  举报