private void OpenServiceItemMessageExecute(OpenEditServiceWindowMessage obj) { //// If it's not the view model of this view => return if (!_viewModel.Equals(obj.Sender)) { return; } //Check if already one window with the same service is opened (from this instance) => when true show and focus it //var editServiceWindows = Application.Current.Windows.OfType<ServiceEditWindow>(); var editServiceWindows = OwnedWindows.OfType <ServiceEditWindow>(); var addWindow = editServiceWindows.FirstOrDefault(x => x.WindowIdentifier == (obj.ServiceItem?.ServiceName ?? string.Empty)); if (addWindow != default) { addWindow.Show(); addWindow.Focus(); return; } DmServiceDefinition data = obj.ServiceItem != null?RegistryManagement.LoadFromRegistry(obj.ServiceItem.ServiceName) : null; //TODO: MVVM also use show later... var window = new ServiceEditWindow(data) { Owner = this, DataContext = new NewEditViewModel(), ReadOnlyMode = obj.ReadOnlyMode, OriginalItem = obj.ServiceItem, WindowIdentifier = obj.ServiceItem?.ServiceName ?? string.Empty, WindowStartupLocation = WindowStartupLocation.CenterOwner }; window.Show(); }
protected override void OnActivated(EventArgs e) { base.OnActivated(e); var firstChild = OwnedWindows.Cast <Window>().FirstOrDefault(); if (firstChild != null) { firstChild.Activate(); } }
private void SkillInfo_OnMouseDown(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2) { var control = sender as PlayerInfoControl; var playerInfo = control?.PlayerInfo; if (playerInfo != null) { var vm = new SkillBreakdownViewModel(playerInfo); var v = new SkillBreakdownView(vm) { Owner = this }; var headerHeight = 27;//approximate height of the title bar on the skill breakdown window var ownedWindows = OwnedWindows.Cast <Window>().Where(w => w.IsVisible).ToList(); if (!ownedWindows.Any()) { //we should move away from windows form here if possible. Screen screen = Screen.FromHandle(new WindowInteropHelper(this).Handle); // Transform screen point to WPF device independent point PresentationSource source = PresentationSource.FromVisual(this); if (source?.CompositionTarget == null) { //if this can't be determined, just use the center screen logic v.WindowStartupLocation = WindowStartupLocation.CenterScreen; } else { // WindowStartupLocation.CenterScreen sometimes put window out of screen in multi monitor environment v.WindowStartupLocation = WindowStartupLocation.Manual; Matrix m = source.CompositionTarget.TransformToDevice; double dx = m.M11; double dy = m.M22; Point locationFromScreen = new Point( screen.Bounds.X + (screen.Bounds.Width - v.Width * dx) / 2, screen.Bounds.Y + (screen.Bounds.Height - (v.SkillResultsGridContainer.MaxHeight + headerHeight) * dy) / 2); Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(locationFromScreen); v.Left = targetPoints.X; v.Top = targetPoints.Y; } } else { v.WindowStartupLocation = WindowStartupLocation.Manual; v.Left = ownedWindows.Max(w => w.Left) + headerHeight; v.Top = ownedWindows.Max(w => w.Top) + headerHeight; } v.Show(); } } }
private void ShowOptions() { _HeartsCanvas.HideHelp(); OptionsWindow optionsWindow = new OptionsWindow { ShowInTaskbar = false, Topmost = Topmost }; optionsWindow.ShowDialog(); _MousePosition = Mouse.GetPosition(this); foreach (ScreenSaverWindow screenSaverWindow in OwnedWindows.OfType <ScreenSaverWindow>()) { screenSaverWindow._MousePosition = Mouse.GetPosition(screenSaverWindow); } }
private void ShowOptionsDialog() { if (OwnedWindows.OfType <OptionsDialog>().Any()) { return; } OptionsDialogModel optionsDialogModel = new OptionsDialogModel { LastOptionsPageType = _LastOptionsPageType }; OptionsDialog dialog = new OptionsDialog { Owner = this, WindowStartupLocation = (WindowState == WindowState.Minimized ? WindowStartupLocation.CenterScreen : WindowStartupLocation.CenterOwner), DataContext = optionsDialogModel }; if (dialog.ShowDialog() == true) { optionsDialogModel.SaveOptions(); _LastOptionsPageType = optionsDialogModel.LastOptionsPageType; } }