WPF-Window数据回调
2020-03-27 本文已影响0人
写前端的大叔
在开发WPF
应用的时候,经常会碰到这样的场景,点击主窗口上的某个按钮,将弹出一个子窗口,在子窗口中有输入框,输入完成后,然后再点击【确定】按钮,将输入框中的内容传递到主窗口。在iOS
开发,这个也很常见,一般都是用delegate
或者block
进行回调。在WPF
中也是一样的,可以用委托进行回调,从这可看出,技术是相通的。下面来看下在WPF
中是怎么进行回调的。
委托delegate
C#
中的Delegate
类似于C
或 C++
中函数的指针。Delegate
是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。Delegate
特别用于实现事件和回调方法。所有的Delegate
都派生自 System.Delegate
类。申明一个delegate
如下所示:
public delegate void UpdateMainwindow(string Content);
事件event
delegate
一般和event
同时出现,通过事件来使用委托。创建一个event
如下所示:
public event UpdateMainwindow updateMainwindow;
调用委托
当在子视图点击某个按钮时,需要将一些信息传递到主界面时,需要在子视图中调用事件,如下所示:
private void Add_Button_Click(object sender, RoutedEventArgs e)
{
if (updateMainwindow != null)
{
updateMainwindow("WinAddPlaneLine");
}
this.Close();
}
然后在主视图创建子窗口的时候,需要将子窗口的委托暴露给主窗口,如下所示:
WinAddField winAddField = new WinAddField();
winAddField.updateMainwindow += SubWindow_updateMainwindow;
private void SubWindow_updateMainwindow(string Content)
{
Message.show(Content);
}
按以上步骤就可以完成数据回调了,使用的是伪代码,只是简单的介绍下委托和事件怎么用来处理数据回调。
个人博客