C#其他类中控制主窗口的show和hide(基于WPF)

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

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

但是在一个无关类中想要显示和隐藏(通过子线程去控制主线程),往往编译能过但是不能达到预期的效果

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

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

public delegate void ShowHandler();


新建事件:

public static event ShowHandler MainWindowShowEvent;

 

在xxx.xaml.cs中注册:

可以添加到构造函数或者Loaded函数里面

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

 

调用:

 

MainWindowShowEvent();

 

 

 

你可能感兴趣的:(C#其他类中控制主窗口的show和hide(基于WPF))