如何从弹出的控制获取用户输入(How to get user input from a popup

2019-10-29 11:54发布

我有利用弹出窗口在WP7一个用户控件。 用户控件具有输入文本框,一个提交按钮。 我的问题是,一旦显示的弹出窗口的代码不会暂停。 它继续通过代码并不会等待用户按提交。

是什么使代码“叫停”,类似一个消息框,一个“好”按钮,一个好的做法呢?

//my custom popup control
InputBox.Show("New Highscore!", "Enter your name!", "Submit");
string name = InputBox.GetInput();
//it does not wait for the user to input any data at this point, and continues to the next piece of code

if (name != "")
{
     //some code
}

Answer 1:

你可以用一个事件,或者异步方法做到这一点。 对于事件,你会订阅您弹出的Closed事件。

    InputBox.Closed += OnInputClosed;
    InputBox.Show("New Highscore!", "Enter your name!", "Submit");

...

private void OnInputClosed(object sender, EventArgs e)
{
    string name = InputBox.Name;
}

当用户按下OK按钮,你会触发事件

private void OnOkayButtonClick(object sender, RoutedEventArgs routedEventArgs)
{
    Closed(this, EventArgs.Empty);
}

另一种选择是使用异步方法。 为此,您需要异步的NuGet包。 要异步您使用两个主要目标,一个做的方法任务和TaskCompletionSource 。

private Task<string> Show(string one, string two, string three)
{
    var completion = new TaskCompletionSource<string>();

    OkButton.Click += (s, e) =>
        {
            completion.SetResult(NameTextBox.Text);
        };


    return completion.Task;
}

这样,你会等待调用表演方法。

string user = await InputBox.Show("New Highscore!", "Enter your name!", "Submit");

我相信Coding4Fun工具包,也有一些不错的输入框



文章来源: How to get user input from a popup control