Example #1
0
        public AccessViewModel(IDialogRegister dialogRegister, IDialogLogin dialogLogin)
        {
            _dialogRegister = dialogRegister;
            _dialogLogin    = dialogLogin;

            ActivateItem(_dialogLogin);
        }
 public void ShowDialog(IDialogRegister dialog)
 {
     try
     {
         _dialogAction.ShowDialog(dialog);
     }
     catch (Exception ex)
     {
         _errorAction(new Exception($"Unexpected error thrown by {dialog.Name} dialog.", ex));
     }
 }
Example #3
0
        public void ShowDialog(IDialogRegister dialog)
        {
            var windowEvents = new Subject<WindowEvent>();
            var view = dialog.ViewFactory();
            var viewModel = dialog.ViewModelFactory(windowEvents.AsObservable());
            view.DataContext = viewModel;

            var window = CreateWindow(view, dialog.Owner ?? _owner, dialog);

            Observable.FromEventPattern<KeyEventHandler, KeyEventArgs>(h => window.KeyDown += h,
                h => window.KeyDown -= h)
                .Where(evp => evp.EventArgs.Key == Key.Escape)
                .Take(1)
                .Subscribe(e =>
                {
                    window.Close();
                    e.EventArgs.Handled = true;
                });

            Observable.FromEventPattern(h => window.Closed += h,
                h => window.Closed -= h)
                .Take(1)
                .Subscribe(e =>
                {
                    windowEvents.OnNext(WindowEvent.Closed);
                });

            if (!(viewModel is IDialogAware))
            {
                window.Title = dialog.Name;
            }
            else
            {
                var dialogAware = viewModel as IDialogAware;
                dialogAware.CloseCommand = new DelegateCommand(window.Close);
                window.SetBinding(System.Windows.Window.TitleProperty, new Binding("Title") {Source = dialogAware});
            }

            _showAction(window, false);
        }
Example #4
0
        private System.Windows.Window CreateWindow(FrameworkElement view, System.Windows.Window owner,
            IDialogRegister dialog = null)
        {
            var window = new MetroWindow()
            {
                Content = view,
                ResizeMode =
                    dialog == null
                        ? ResizeMode.NoResize
                        : dialog.AllowResize ? ResizeMode.CanResize : ResizeMode.NoResize,
                Topmost = !Debugger.IsAttached,
                ShowInTaskbar = false,
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };

            window.SetResourceReference(FrameworkElement.StyleProperty, "Window");

            if (owner != null && owner.IsVisible)
                window.Owner = owner;

            if (dialog != null && dialog.Size.HasValue)
            {
                window.Width = dialog.Size.Value.Width;
                window.Height = dialog.Size.Value.Height;
            }
            else if (double.IsNaN(view.Width) && double.IsNaN(view.Height))
            {
                window.SizeToContent = SizeToContent.WidthAndHeight;
                var behaviors = Interaction.GetBehaviors(window);
                if (behaviors != null)
                    behaviors.Add(new WindowChromeSizeToContentBehavior());
            }
            else if (double.IsNaN(view.Width))
            {
                window.SizeToContent = SizeToContent.Width;
                window.Height = view.Height + SystemParameters.WindowCaptionHeight +
                                 SystemParameters.ResizeFrameHorizontalBorderHeight;
            }
            else if (double.IsNaN(view.Height))
            {
                window.SizeToContent = SizeToContent.Height;
                window.Width = view.Width +
                                 SystemParameters.ResizeFrameHorizontalBorderHeight;
            }
            else
            {
                window.SizeToContent = SizeToContent.Manual;
                window.Width = view.Width +
                                 SystemParameters.ResizeFrameHorizontalBorderHeight;
                window.Height = view.Height + SystemParameters.WindowCaptionHeight +
                                 SystemParameters.ResizeFrameHorizontalBorderHeight;

            }
            return window;
        }