美文网首页
WPF-Window数据回调

WPF-Window数据回调

作者: 写前端的大叔 | 来源:发表于2020-03-27 23:44 被阅读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);
            }
    

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

    相关文章

      网友评论

          本文标题:WPF-Window数据回调

          本文链接:https://www.haomeiwen.com/subject/bijduhtx.html