Я пытаюсь вызвать MessageDialog, который будет запрашивать ввод данных пользователем, а затем продолжить этот ввод.
Ниже приведен код для этого.
XAML
<Button Content="Click" Click="Button_Click"/>
XAML.CS
public MainPage()
{
this.InitializeComponent();
}
private int _res;
private void Button_Click(object sender, RoutedEventArgs e)
{
Click_Helper(sender, e);
System.Diagnostics.Debug.WriteLine(_res.ToString());
//Some other work will be done here
}
private async Task Click_Helper(object sender, RoutedEventArgs e)
{
MessageDialog msgbox = new MessageDialog("Hello there");
msgbox.Commands.Clear();
msgbox.Commands.Add(new UICommand { Label = "Yes", Id = 0 });
msgbox.Commands.Add(new UICommand { Label = "No", Id = 1 });
var result = await msgbox.ShowAsync();
_res = (int)result.Id;
}
В приведенном выше коде я хочу, чтобы _res был установлен до Debug Writeline, но почему-то я не могу этого достичь. К сожалению для UWP, кажется, что MessageDialog не имеет возможности использовать его синхронно.
Я пытался использовать метод .Wait () для Задачи, но он вызывает тупик (я где-то читал об этом, и он имел какое-то отношение к тому, что поток пользовательского интерфейса блокировал себя от показа MessageDialog)
Я также попробовал несколько других методов, но ни один не работает. Я начинаю думать, что это невозможно.
Пожалуйста, помогите пролить свет на это.