Я создал свой собственный MessageBox, используя MessagePrompt
из набора инструментов Coding4Fun.
Проблема возникает, когда я запускаю ResetData_Click
. Я ожидал, что после запуска ComplexMessage.Show
остальной код внутри ResetData_Click
перестанет выполняться, пока открыт ComplexMessage
. Как это произошло, это совершенно другое. Весь код выполняется сразу, и не имеет значения, что пользователь выберет в ComplexMessage
, потому что
if (ComplexMessage.Result)...
уже выполнено.
Что я должен сделать, чтобы мой ComplexMessage
действовал как System.Windos.MessageBox
? Это означает, что при вызове MessageBox
родительский поток ожидает решения пользователя.
private void ResetData_Click(object sender, RoutedEventArgs e)
{
ComplexMessage.Show("You are about to delete all data", "Are you sure?", true);
if (ComplexMessage.Result)
{
DataControl.DataFileReset();
}
}
public class ComplexMessage
{
private static MessagePrompt messageprompt;
private static bool messageresult;
public static void Show(string message, string title, bool vibrate)
{
if (!(!(messageprompt == null) && messageprompt.IsOpen))
{
messageprompt = new MessagePrompt
{
Title = title,
Message = message
};
messageprompt.Completed += new EventHandler<PopUpEventArgs<string, PopUpResult>>(messageprompt_Completed);
messageprompt.IsCancelVisible = true;
messageprompt.Show();
if (vibrate) { Tools.VibrateMessage(); }
}
}
static void messageprompt_Completed(object sender, PopUpEventArgs<string, PopUpResult> e)
{
if (!e.PopUpResult.Equals(PopUpResult.Cancelled))
{
messageresult = true;
}
else
{
messageresult = false;
}
((MessagePrompt)sender).Completed -= messageprompt_Completed;
}
public static bool Result
{
get { return messageresult; }
}
}