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; }