Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 7 将值从用户控件(弹出窗口)传递到当前页面windows phone 7_Windows Phone 7_User Controls_Parameter Passing - Fatal编程技术网

Windows phone 7 将值从用户控件(弹出窗口)传递到当前页面windows phone 7

Windows phone 7 将值从用户控件(弹出窗口)传递到当前页面windows phone 7,windows-phone-7,user-controls,parameter-passing,Windows Phone 7,User Controls,Parameter Passing,在主页上,我使用此选项打开用户控件Login.xaml: myPopup = new Popup() { IsOpen = true, Child = new Login() }; 我想在登录用户控件中输入信息,并将该值传递回Mainpage进行处理,我如何才能做到这一点?我知道如何使用OnNavigateTo和From将值传递到其他页面,但在这种情况下它不起作用,因为弹出窗口实际上位于主页的顶部,所以它不会在任何地方导航。好吧,您可以使用一些全局变量。然而,使用globals是非常糟糕的设计

在主页上,我使用此选项打开用户控件Login.xaml:

myPopup = new Popup() { IsOpen = true, Child = new Login() };

我想在登录用户控件中输入信息,并将该值传递回Mainpage进行处理,我如何才能做到这一点?我知道如何使用OnNavigateTo和From将值传递到其他页面,但在这种情况下它不起作用,因为弹出窗口实际上位于主页的顶部,所以它不会在任何地方导航。

好吧,您可以使用一些全局变量。然而,使用globals是非常糟糕的设计。更好的选择是使用例如事件聚合器模式。阅读相关信息,或者。

您需要使用事件:

var login = new Login();
login.Completed += (a, b) =>
    {
        // retrieve login.Data
        // close popup
    };
myPopup = new Popup() { IsOpen = true, Child = login };
和登录用户控件:

{
    ...
    public event EventHandler Completed;
    void OnCompleted
    {
        var h = Completed;
        if (h!= null) h(this, new EventArgs());
    }
}
记住在适合的登录名中调用OnCompleted()(例如OK按钮处理程序)