private StackHandle <T> PrepareAndShowDialogBox <T>(string message, IEnumerable <T> buttons, ImageSource image) { var dispatcher = View.Dispatcher; if (!dispatcher.CheckAccess()) { return(dispatcher.Invoke(() => PrepareAndShowDialogBox <T>(message, buttons, image), DispatcherPriority.Send)); } var entries = new List <ActionContextEntry>(); var entry = ActionContextEntry.Create(ActionContextConstants.DialogBoxMessage, message, false); entries.Add(entry); if (image != null) { var imageEntry = ActionContextEntry.Create(ActionContextConstants.DialogBoxImage, image, false); entries.Add(imageEntry); } if (buttons != null) { var boxedButtons = buttons.Where(x => x != null).Cast <object>().ToList().AsReadOnly(); if (boxedButtons.Count > 0) { var buttonEntry = ActionContextEntry.Create(ActionContextConstants.DialogBoxButtons, boxedButtons, false); entries.Add(buttonEntry); } } var builder = CreateWizardBuilder(); builder.AddStep <DialogView, DialogViewModel>(parameters: entries.ToArray()); builder.Size = new ExtendedSize(480, 120, minWidth: 480, minHeight: 120); Guid stackId; var overlay = CreateWizardOverlay(builder, out stackId); var handle = new StackHandle <T>(stackId); overlay.Tag = handle; IsStacked = Interlocked.Increment(ref _stackCounter) > 0; return(handle); }
/// <summary> /// Executes async. /// </summary> /// <returns>A value indicating wether to continue execution.</returns> public sealed override bool Execute() { if (!base.Execute()) { return(false); } var result = Return(); StackInfo info; if (ActionContext.TryGetValue(ActionContextConstants.StackHandle, out info)) { _handle = info as StackHandle <string>; if (_handle != null) { _result = ActionContext.GetValue <string>(ActionContextConstants.DialogBoxResult); } } return(result); }