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

时间:2011-07-22 09:31:09

标签: windows-phone-7 user-controls parameter-passing

从主页面,我用它来打开用户控件Login.xaml:

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

我想在Login用户控件中输入信息并将该值传递回Mainpage进行处理,我该怎么做?我知道如何使用OnNavigateTo和From将值传递给其他页面,但它不适用于这种情况,因为Popup实际上位于MainPage的顶部,所以它不会在任何地方导航。

2 个答案:

答案 0 :(得分:1)

好吧,你可以使用一些全局变量。但是使用全局变量是非常糟糕的设计。更好的选择是使用例如Event Aggregator模式。阅读hereherehere

答案 1 :(得分:1)

您需要使用以下事件:

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按钮处理程序)