Exemplo n.º 1
0
        /// <summary>
        /// Displays a modal dialog of a type that is determined by the dialog type locater.
        /// </summary>
        /// <param name="ownerViewModel">A view model that represents the owner window of the dialog.</param>
        /// <param name="viewModel">The view model of the new dialog.</param>
        /// <returns>
        /// A nullable value of type <see cref="T:System.Boolean" /> that signifies how a window was closed by
        /// the user.
        /// </returns>
        public new bool?ShowDialog(INotifyPropertyChanged ownerViewModel, IModalDialogViewModel viewModel)
        {
            StatusUpdate.IsPopUpOpen = true;
            bool?result = base.ShowDialog(ownerViewModel, viewModel);

            StatusUpdate.IsPopUpOpen = false;
            return(result);
        }
Exemplo n.º 2
0
        private bool?ShowDialog(
            INotifyPropertyChanged ownerViewModel,
            IModalDialogViewModel viewModel,
            Type dialogType)
        {
            Window dialog = CreateDialog(dialogType, ownerViewModel, viewModel);

            PropertyChangedEventHandler handler = RegisterDialogResult(dialog, viewModel);

            dialog.ShowDialog();
            UnregisterDialogResult(viewModel, handler);

            return(viewModel.DialogResult);
        }
Exemplo n.º 3
0
        public virtual void Init()
        {
            _modalDialogViewModel = GetModalDialogViewModel();

            ConfirmCommand = new DelegateCommand(
                Confirm,
                CheckCanConfirmCommandExecute);

            CancelCommand = new DelegateCommand(
                Cancel,
                CheckCanCancelCommandExecute);

            OnInit();
        }
Exemplo n.º 4
0
        private bool?ShowDialog(
            INotifyPropertyChanged ownerViewModel,
            IModalDialogViewModel viewModel,
            Type dialogType)
        {
            Logger.Write($"Dialog: {dialogType}; View model: {viewModel.GetType()}; Owner: {ownerViewModel.GetType()}");

            IWindow dialog = CreateDialog(dialogType, ownerViewModel, viewModel);

            PropertyChangedEventHandler handler = RegisterDialogResult(dialog, viewModel);

            dialog.ShowDialog();
            UnregisterDialogResult(viewModel, handler);

            return(viewModel.DialogResult);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Displays a custom modal dialog of specified type <typeparamref name="T"/>.
        /// </summary>
        /// <param name="ownerViewModel">
        /// A view model that represents the owner window of the custom dialog.
        /// </param>
        /// <param name="viewModel">The view model of the new custom dialog.</param>
        /// <typeparam name="T">The type of the custom dialog to show.</typeparam>
        /// <returns>
        /// A nullable value of type <see cref="bool"/> that signifies how a window was closed by
        /// the user.
        /// </returns>
        /// <exception cref="ViewNotRegisteredException">
        /// No view is registered with specified owner view model as data context.
        /// </exception>
        public bool?ShowCustomDialog <T>(
            INotifyPropertyChanged ownerViewModel,
            IModalDialogViewModel viewModel)
            where T : IWindow
        {
            if (ownerViewModel == null)
            {
                throw new ArgumentNullException(nameof(ownerViewModel));
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            return(ShowDialog(ownerViewModel, viewModel, typeof(T)));
        }
Exemplo n.º 6
0
        private static PropertyChangedEventHandler RegisterDialogResult(
            Window dialog,
            IModalDialogViewModel viewModel)
        {
            PropertyChangedEventHandler handler = (sender, e) =>
            {
                if (e.PropertyName == DialogResultPropertyName)
                {
                    dialog.DialogResult = viewModel.DialogResult;
                }
            };

            viewModel.PropertyChanged += handler;

            return(handler);
        }
Exemplo n.º 7
0
        private static PropertyChangedEventHandler RegisterDialogResult(
            IWindow dialog,
            IModalDialogViewModel viewModel)
        {
            PropertyChangedEventHandler handler = (sender, e) =>
            {
                if (e.PropertyName == DialogResultPropertyName && dialog.DialogResult != viewModel.DialogResult)
                {
                    Logger.Write($"Dialog: {dialog.GetType()}; Result: {viewModel.DialogResult}");
                    dialog.DialogResult = viewModel.DialogResult;
                }
            };

            viewModel.PropertyChanged += handler;

            return(handler);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Displays a modal dialog of a type that is determined by the dialog type locator.
        /// </summary>
        /// <param name="ownerViewModel">
        /// A view model that represents the owner window of the dialog.
        /// </param>
        /// <param name="viewModel">The view model of the new dialog.</param>
        /// <returns>
        /// A nullable value of type <see cref="bool"/> that signifies how a window was closed by
        /// the user.
        /// </returns>
        /// <exception cref="ViewNotRegisteredException">
        /// No view is registered with specified owner view model as data context.
        /// </exception>
        public bool?ShowDialog(
            INotifyPropertyChanged ownerViewModel,
            IModalDialogViewModel viewModel)
        {
            if (ownerViewModel == null)
            {
                throw new ArgumentNullException(nameof(ownerViewModel));
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            Type dialogType = dialogTypeLocator.Locate(viewModel);

            return(ShowDialog(ownerViewModel, viewModel, dialogType));
        }
Exemplo n.º 9
0
        private static PropertyChangedEventHandler RegisterDialogResult(
            IWindow dialog,
            IModalDialogViewModel viewModel)
        {
            void Handler(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == DialogResultPropertyName && dialog.DialogResult != viewModel.DialogResult)
                {
                    Logger.Write($"Dialog: {dialog.GetType()}; Result: {viewModel.DialogResult}");
                    dialog.DialogResult = viewModel.DialogResult;
                }
            }

            viewModel.PropertyChanged += Handler;

            return(Handler);
        }
Exemplo n.º 10
0
        private static PropertyChangedEventHandler RegisterDialogResult(
            Window dialog,
            IModalDialogViewModel viewModel)
        {
            PropertyChangedEventHandler handler = (sender, e) =>
            {
                if (e.PropertyName == DialogResultPropertyName && dialog.DialogResult != viewModel.DialogResult)
                {
                    Logger.Write("Dialog: {0}; Result: {1}".InvariantFormat(dialog.GetType(), viewModel.DialogResult));
                    dialog.DialogResult = viewModel.DialogResult;
                }
            };

            viewModel.PropertyChanged += handler;

            return(handler);
        }
Exemplo n.º 11
0
        private bool?ShowDialog(
            INotifyPropertyChanged ownerViewModel,
            IModalDialogViewModel viewModel,
            Type dialogType)
        {
            Logger.Write("Dialog: {0}; View model: {1}; Owner: {2}"
                         .InvariantFormat(
                             dialogType,
                             viewModel.GetType(),
                             ownerViewModel.GetType()));

            Window dialog = CreateDialog(dialogType, ownerViewModel, viewModel);

            PropertyChangedEventHandler handler = RegisterDialogResult(dialog, viewModel);

            dialog.ShowDialog();
            UnregisterDialogResult(viewModel, handler);

            return(viewModel.DialogResult);
        }
Exemplo n.º 12
0
 private static void UnregisterDialogResult(
     IModalDialogViewModel viewModel,
     PropertyChangedEventHandler handler)
 {
     viewModel.PropertyChanged -= handler;
 }
Exemplo n.º 13
0
 public bool?ShowDialog(INotifyPropertyChanged ownerViewModel, IModalDialogViewModel viewModel)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
 public bool?ShowDialog <[NullableAttribute(0)] T>(INotifyPropertyChanged ownerViewModel, IModalDialogViewModel viewModel) where T : System.Windows.Window
 {
     throw new NotImplementedException();
 }