Пример #1
0
        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);
        }
Пример #2
0
        /// <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);
        }