public override void OnApplyTemplate() { if (_popup != null) { _popup.Loaded -= PopupOnLoaded; } if (_toggleButton != null) { _toggleButton.PreviewMouseLeftButtonUp -= ToggleButtonOnPreviewMouseLeftButtonUp; } base.OnApplyTemplate(); _popup = GetTemplateChild(PopupPartName) as PopupEx; _popupContentControl = GetTemplateChild(PopupContentControlPartName) as ContentControl; _toggleButton = GetTemplateChild(TogglePartName) as ToggleButton; if (_popup != null) { _popup.Loaded += PopupOnLoaded; } if (_toggleButton != null) { _toggleButton.PreviewMouseLeftButtonUp += ToggleButtonOnPreviewMouseLeftButtonUp; } VisualStateManager.GoToState(this, IsPopupOpen ? PopupIsOpenStateName : PopupIsClosedStateName, false); }
private void pwdPopup_Loaded(object sender, RoutedEventArgs e) { if (keyboard == null) { keyboard = sender as PopupEx; keyboard.Closed += Keyboard_Closed; } }
private void Busy(object sender, RoutedEventArgs e) { Log("Showing Busy"); _popup?.Hide(); _popup = new PopupEx { Placement = GetPopupPlacement(), CloseButtonVisibility = PopupCloseButtonVisibile.IsChecked.Value ? Visibility.Visible : Visibility.Collapsed, AllowBackClose = PopupCloseButtonBackCloses.IsChecked.Value, Template = BusyTemplate, }; _popup.Show(null, () => Log("Hidding Busy")); }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (this.ImageRect.Contains(e.Location)) { this._mouseState = EMouseState.MouseDown; this.listBox.Visible = true; this._popupEx = new PopupEx(this.listBox); this._popupEx.Show(this); } this._mouseAll = EMouseState.MouseDown; base.Invalidate(); }
private static void IsOpenChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { bool isOpen = (bool)e.NewValue; ContentControl owner = MaskLayerBehavior.GetOwner(d) as ContentControl; PopupEx layerContent = d as PopupEx; if (owner != null) { if ((bool)e.NewValue) { //蒙板 Grid layer = new Grid() { Background = new SolidColorBrush(Color.FromArgb(160, 0, 0, 0)) }; layer.PreviewMouseLeftButtonUp += delegate { MaskLayerBehavior.SetIsOpen(d, false); }; //父级窗体原来的内容 UIElement original = owner.Content as UIElement; owner.Content = null; //容器Grid Grid container = new Grid(); container.Children.Add(original); //放入原来的内容 container.Children.Add(layer); //在上面放一层蒙板,将装有原来内容和蒙板的容器赋给父级窗体 owner.Content = container; layerContent.AllowsTransparency = true; layerContent.StaysOpen = true; layerContent.SetValue(PopopHelper.PopupPlacementTargetProperty, owner); layerContent.PlacementTarget = owner; layerContent.Placement = PlacementMode.Center; layerContent.IsOpen = true; } else { //容器Grid Grid grid = owner.Content as Grid; //父级窗体原来的内容 UIElement original = VisualTreeHelper.GetChild(grid, 0) as UIElement; //将父级窗体原来的内容在容器Grid中移除 grid.Children.Remove(original); //赋给父级窗体 owner.Content = original; } } }
public static Popup CreatePopup(object content) { var popup = new PopupEx { AllowsTransparency = false, UseLayoutRounding = true, StaysOpen = false, HasSystemDropShadow = true, Child = WrapContent(content) }; popup.Opened += OnPopupOpened; popup.Closed += OnPopupClosed; return(popup); }
protected override void OnStartup(StartupEventArgs e) { Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture; base.OnStartup(e); ThemeManager.Install(); AeroTheme.SetAsCurrentTheme(); PopupEx.InstallHook(); var window = new MainWindow(); var viewModel = new MainWindowViewModel(window); mainWindowViewModel = viewModel; window.DataContext = viewModel; MainWindow = window; window.Show(); viewModel.Load().Forget(); }