private void HandleOnSettingTaskClickedEvent(object sender,Manager.Common.Settings.TaskScheduler taskScheduler) { RunSettingTaskDetail control = new RunSettingTaskDetail(taskScheduler); XamDialogWindow window = new XamDialogWindow(); window.FontSize = 12; window.StartupPosition = StartupPosition.Center; window.IsModal = false; window.Header = "任务详细"; window.Width = 455; window.Height = 345; window.Content = control; window.Show(); this.MainFrame.Children.Add(window); window.BringToFront(); control.OnExited += new RoutedEventHandler(delegate(object sender2, RoutedEventArgs e2) { window.Close(); }); }
public void ShowOrUpdateMessage(string message, string title, Action onClose, bool isShowDateTime) { var currPage = WorkPage.CurrentPage; if (currPage == null) { return; } if (_messageWindow == null) { _messageWindow = new XamDialogWindow { StartupPosition = StartupPosition.Center, ModalBackground = System.Windows.Media.Brushes.LightSteelBlue, ModalBackgroundOpacity = 0.5, Header = title, HeaderIconVisibility = Visibility.Collapsed, IsModal = true, IsResizable = false, }; SetRowSpan(_messageWindow, 10); SetColumnSpan(_messageWindow, 10); if (Children != null) { Children.Add(_messageWindow); } _messageWindow.WindowStateChanged += s_WindowStateChanged; } var messagePanel = _messageWindow.Content as MessagePanel; if (messagePanel == null) { messagePanel = new MessagePanel(onClose); _messageWindow.Content = messagePanel; } messagePanel.AddOrUpdateMessage(message, isShowDateTime); if (_messageWindow.WindowState == WindowState.Hidden) { _messageWindow.Show(); } _messageWindow.BringToFront(); _messageWindow.IsActive = true; if (_messageWindow.Dispatcher == null) { return; } _messageWindow.Dispatcher.BeginInvoke((Action)(() => { if (_messageWindow == null) { return; } var mp = _messageWindow.Content as MessagePanel; if (mp == null) { return; } var lv = mp.FindName("lvMessages") as ListView; if (lv == null) { return; } //Подогнать размер под содержимое //lv.UpdateLayout(); //messagePanel.UpdateLayout(); //_messageWindow.Height = lv.ActualHeight + 90; //_messageWindow.Width = lv.ActualWidth + 30; _messageWindow.UpdateLayout(); _messageWindow.CenterDialogWindow(); }), DispatcherPriority.Background); }
public void ShowDialogWin(string message, string caption, double width, double height, double left, double top, bool isManualStartupPosition) { XamDialogWindow commonDialogWin = new XamDialogWindow() { Width = width, Height = height, Header = caption, StartupPosition = isManualStartupPosition ? Infragistics.Controls.Interactions.StartupPosition.Manual : Infragistics.Controls.Interactions.StartupPosition.Center, Left = left, Top = top, IsModal = true, CloseButtonVisibility = Visibility.Collapsed, MinimizeButtonVisibility = Visibility.Collapsed, MaximizeButtonVisibility = Visibility.Collapsed, Name = "_CommonDialogWin" }; TextBlock msgLabel = new TextBlock() { Foreground = new SolidColorBrush(Colors.Blue), Text = message, Margin = new Thickness(10), VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, TextWrapping = TextWrapping.Wrap }; Button okBtn = new Button() { Content = "OK", Width = 80, Height = 25, VerticalAlignment = VerticalAlignment.Bottom, Margin = new Thickness(5), HorizontalAlignment = HorizontalAlignment.Center, Tag = commonDialogWin, TabIndex = 1 }; okBtn.Click += new RoutedEventHandler(okBtn_Click); StackPanel msgPanel = new StackPanel(); msgPanel.Margin = new Thickness(5); msgPanel.HorizontalAlignment = HorizontalAlignment.Center; msgPanel.VerticalAlignment = VerticalAlignment.Center; msgPanel.Children.Add(msgLabel); ScrollViewer scrollViewer = new ScrollViewer(); scrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto; scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; scrollViewer.VerticalContentAlignment = VerticalAlignment.Stretch; scrollViewer.Content = msgPanel; Grid.SetRow(scrollViewer, 0); StackPanel btnPanel = new StackPanel(); btnPanel.Margin = new Thickness(5); btnPanel.HorizontalAlignment = HorizontalAlignment.Center; btnPanel.VerticalAlignment = VerticalAlignment.Bottom; btnPanel.Children.Add(okBtn); Grid.SetRow(btnPanel, 1); Grid layoutGrid = new Grid(); layoutGrid.RowDefinitions.Add(new RowDefinition()); layoutGrid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); layoutGrid.Children.Add(scrollViewer); layoutGrid.Children.Add(btnPanel); commonDialogWin.Content = layoutGrid; int columnSpan = this._LayoutContainer.ColumnDefinitions.Count; int rowSpan = this._LayoutContainer.RowDefinitions.Count; if (columnSpan > 0) Grid.SetColumnSpan(commonDialogWin, columnSpan); if (rowSpan > 0) Grid.SetRowSpan(commonDialogWin, rowSpan); if (!this._LayoutContainer.Children.Contains(commonDialogWin)) { this._LayoutContainer.Children.Add(commonDialogWin); } this._CommonDialogWins.Add(commonDialogWin); commonDialogWin.Show(); }
public void ShowLocalModal(FrameworkElement content, object title, bool isResizable = true, bool isSpan = false, bool isNotCloseOnEscapeButton = false, bool allowCloseWindow = true) { var children = content as ILocalChildren; System.Windows.Media.Brush modalBackground = null; _isNotCloseOnEscapeButton = isNotCloseOnEscapeButton; var isTrueModal = false; var id = Guid.Empty; if (children != null) { if (children.Id == Guid.Empty) { children.Id = Guid.NewGuid(); } id = children.Id; if (children.LocalModalType != EnumLocalModalType.None) { //Проверка открыто ли окно с таким содержимым if (children.LocalModalType == EnumLocalModalType.UniqueById) { XamDialogWindow dw; if (DialogWindowsCollection.TryGetValue(id, out dw) && dw != null && dw.WindowState != WindowState.Hidden) { return; } //Изменен тип коллекции, но логика сохранена //if (dw.WindowState == WindowState.Hidden) return false; //if (ch == null) return false; //return ch.LocalModalType == EnumLocalModalType.UniqueById && ch.Id == children.Id; } if (children.LocalModalType == EnumLocalModalType.TrueModal) { modalBackground = System.Windows.Media.Brushes.LightSteelBlue; isTrueModal = true; } } } if (id == Guid.Empty) { id = Guid.NewGuid(); } var xamDialogWindow = new XamDialogWindow { StartupPosition = StartupPosition.Center, ModalBackground = modalBackground, Header = title, IsModal = true, IsResizable = isResizable, Content = content, Tag = id, CloseButtonVisibility = allowCloseWindow? Visibility.Visible: Visibility.Collapsed }; if (isSpan) { if (RowDefinitions.Count > 0) { SetRowSpan(xamDialogWindow, RowDefinitions.Count); } if (ColumnDefinitions.Count > 0) { SetColumnSpan(xamDialogWindow, ColumnDefinitions.Count); } } Children.Add(xamDialogWindow); xamDialogWindow.WindowStateChanged += s_WindowStateChanged; if (isTrueModal) { xamDialogWindow.IsActiveChanged += xamDialogWindow_IsActiveChanged; } xamDialogWindow.Loaded += XamDialogWindow_Loaded; xamDialogWindow.Unloaded += XamDialogWindow_Unloaded; xamDialogWindow.Show(); if (!DialogWindowsCollection.IsEmpty) { var prevWindow = DialogWindowsCollection.Values.Last(); if (prevWindow != null && prevWindow.WindowState != WindowState.Hidden) { xamDialogWindow.Margin = new Thickness(prevWindow.Margin.Left + 6, prevWindow.Margin.Top + 12, 0, 0); } } if (isResizable) { xamDialogWindow.SizeChanged += OnDwSizeChanged; } else if (DialogWindowsCollection.IsEmpty) { SizeChanged += OnParentSizeChanged; } DialogWindowsCollection.TryAdd(id, xamDialogWindow); xamDialogWindow.Dispatcher.BeginInvoke((Action)(() => { xamDialogWindow.CenterDialogWindow(); }), DispatcherPriority.Background); }