PDA

View Full Version : [C#][ModernDialog][MessageBoxResult] Cancel Button sulla seconda finestra


robertino_salemi
23-04-2015, 16:09
Buonasera,
sto utilizzanto ModernDialog che visualizza un UserControl e nel quale ho integrato un custom button:

Button customButtonClose = new Button() { Content = "Close" };
customButtonClose.Click += (ss, ee) =>
{
CheckPendingChanges();
dialog.Close();
};
dialog.Buttons = new Button[] { customButtonSave, customButtonClose };

Nel metodo CheckPendingChanges():

var rsltDialog = Utils.ShowMessageYesNoClose("Are there a pending changes, save?");

if (rsltDialog == MessageBoxResult.Yes)
{
result = customFunction();
}

dove Utils.ShowMessageYesNoClose() è:

public static MessageBoxResult ShowMessageYesNoClose(string text)
{
var dlg = new ModernDialog
{
Title = (string)Application.Current.FindResource("mdAppTitle"),
Content = new BBCodeBlock { BBCode = text, Margin = new Thickness(0, 0, 0, 8) },
MinHeight = 0,
MinWidth = 0,
MaxHeight = 480,
MaxWidth = 640,
};
dlg.YesButton.Content = (string)Application.Current.FindResource("msgBoxResultYes");
dlg.NoButton.Content = (string)Application.Current.FindResource("msgBoxResultNo");
dlg.Buttons = new[] { dlg.YesButton, dlg.NoButton, customCancelClose, dlg.CancelButton };

dlg.ShowDialog();

return dlg.MessageBoxResult;
}


Ho un problema: quando clicco sul CancelButton, le due finestre vengono chiuse insieme, mentre io vorrei chiudere solo seconda, quella dove c'è la domanda.

Dove potrebbe essere l'errore?

Grazie.

robertino_salemi
23-04-2015, 16:42
Risolto, ho cambiato il tipo restituito della metodo CheckPendingChanges(), adesso restituisce un MessageboxResult e ho modificato il comportamento in:

MessageBoxResult bRes = CheckPendingChanges();

if (bRes != MessageBoxResult.Cancel)
dialog.Close();


Adesso funziona, grazie.