C#单独类中控制窗口的show和hide(基于WPF)

来源:互联网 发布:暨南大学网络教育平台 编辑:程序博客网 时间:2024/06/09 17:38

(初学WPF,对遇到的问题请求大佬解决后进行整理,理解上可能还是有些偏差,请各位批评指正)

WPF中显示和隐藏一个窗口,可以在自己的.xmal.cs中进行this.show()和this.hide()的调用,

但是在一个无关类中想要显示和隐藏,往往编译能过但是不能达到预期的效果

解决办法是使用委托事件和Invoke函数:

比如我在Impl.cs类中想要调用窗口的开合,首先新建一个委托:

public delegate void ShowHandler();

新建事件:

public static event ShowHandler MainWindowShowEvent;


然后mainwindow.xaml.cs 的Loaded函数中进行如下处理:

private void MainWindow_Loaded(object sender, RoutedEventArgs e)        {            Impl impl = new Impl();            Impl.MainWindowShowEvent += new Impl.ShowHandler(this.ShowMainWindow);                    }
public void ShowMainWindow()
         {
            this.Dispatcher.Invoke(new Action(delegate { this.Show(); }));
         }

原创粉丝点击