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

本文介绍如何在WPF中从无关类通过子线程控制主线程显示和隐藏窗口的方法。使用委托事件与Dispatcher.Invoke函数实现跨线程操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(初学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();

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值