WPF-Window数据回调

2020-03-27  本文已影响0人  写前端的大叔

在开发WPF应用的时候,经常会碰到这样的场景,点击主窗口上的某个按钮,将弹出一个子窗口,在子窗口中有输入框,输入完成后,然后再点击【确定】按钮,将输入框中的内容传递到主窗口。在iOS开发,这个也很常见,一般都是用delegate或者block进行回调。在WPF中也是一样的,可以用委托进行回调,从这可看出,技术是相通的。下面来看下在WPF中是怎么进行回调的。

委托delegate

C#中的Delegate类似于CC++ 中函数的指针。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);
        }

按以上步骤就可以完成数据回调了,使用的是伪代码,只是简单的介绍下委托和事件怎么用来处理数据回调。
个人博客

上一篇下一篇

猜你喜欢

热点阅读