private void InitializeEvent() { ControlTemplate mainWindowTemplate = this.Template; Button minBtn = (Button)mainWindowTemplate.FindName("btnMin", this); ButtonUserControl maxBtn = (ButtonUserControl)mainWindowTemplate.FindName("btnMax", this); Button closeBtn = (Button)mainWindowTemplate.FindName("btnClose", this); Button skinBtn = (Button)mainWindowTemplate.FindName("btnSkin", this); Button menuBtn = (Button)mainWindowTemplate.FindName("btnMenu", this); minBtn.Click += delegate { oldRect = new Rect(this.Left, this.Top, this.Width, this.Height); this.WindowState = WindowState.Minimized; }; maxBtn.Click += delegate { ImageSourceConverter imgConv = new ImageSourceConverter(); if (this.WindowState == WindowState.Normal) { oldRect = new Rect(this.Left, this.Top, this.Width, this.Height); this.WindowState = WindowState.Maximized; maxBtn.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_normal.png"); maxBtn.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_highlight.png"); maxBtn.ToolTip = "向下还原"; } else { this.WindowState = WindowState.Normal; maxBtn.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_normal.png"); maxBtn.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_highlight.png"); maxBtn.ToolTip = "最大化"; } }; closeBtn.Click += delegate { this.Close(); //接下来的在Closed事件里处理 }; menuBtn.Click += delegate { if (this.TitleContextMenu != null) { this.TitleContextMenu.IsOpen = true; } }; //Border borderTitle = (Border)mainWindowTemplate.FindName("borderTitle", this); //borderTitle.MouseMove += delegate(object sender, MouseEventArgs e) //{ // if (e.LeftButton == MouseButtonState.Pressed) // { // this.DragMove(); // } //}; //borderTitle.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e) //{ // if (e.ClickCount >= 2) // { // maxBtn.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); // } //}; skinBtn.Click += delegate { pickerWindow.WindowStartupLocation = WindowStartupLocation.Manual; pickerWindow.Top = this.Top + 18; pickerWindow.Left = this.Left + this.Width - 138 - pickerWindow.Width; pickerWindow.Show(); }; }
public BaseWindow() { this.AllowDrop = true; //this.Style = (Style)App.Current.Resources["MainWindowStyle"]; this.SourceInitialized += delegate(object sender, EventArgs e) { this.hwndSource = PresentationSource.FromVisual((Visual)sender) as HwndSource; this.hwndSource.AddHook(Win32.WindowProc); }; this.Loaded += delegate { try { //ControlTemplate mainWindowTemplate = (ControlTemplate)App.Current.Resources["BaseWindowControlTemplate"]; ControlTemplate mainWindowTemplate = this.Template; ButtonUserControl btnMenu = (ButtonUserControl)mainWindowTemplate.FindName("btnMenu", this); ButtonUserControl btnSkin = (ButtonUserControl)mainWindowTemplate.FindName("btnSkin", this); ButtonUserControl btnMin = (ButtonUserControl)mainWindowTemplate.FindName("btnMin", this); ButtonUserControl btnMax = (ButtonUserControl)mainWindowTemplate.FindName("btnMax", this); if (!IsShowMenuButton) { btnMenu.Visibility = Visibility.Collapsed; } if (IsShowSkinButton) { pickerWindow = new ColorPickerWindow(); ChangeColor(Color.FromArgb(pickerWindow.CurrentColor.A, pickerWindow.CurrentColor.R, pickerWindow.CurrentColor.G, pickerWindow.CurrentColor.B)); pickerWindow.ColorChanged += delegate(System.Windows.Media.Color c) { ChangeColor(c); }; pickerWindow.SkinChanged += delegate(BitmapSource bitmapSource) { ChangeSkin(bitmapSource); }; pickerWindow.OpacityChanged += delegate(int value) { this.Opacity = Math.Round(value / 100.0, 2); }; } else { //2015-7-13 System.Drawing.Color _currentColor = System.Drawing.Color.FromArgb(21, 160, 253); ChangeColor(Color.FromArgb(_currentColor.A, _currentColor.R, _currentColor.G, _currentColor.B)); btnSkin.Visibility = Visibility.Collapsed; } if (this.ResizeMode == ResizeMode.NoResize) { btnMax.Visibility = Visibility.Collapsed; btnMin.Visibility = Visibility.Collapsed; } if (this.ResizeMode == ResizeMode.CanMinimize) { btnMax.IsEnabled = false; } if (this.ResizeMode == ResizeMode.CanResize || this.ResizeMode == ResizeMode.CanResizeWithGrip) { ImageSourceConverter imgConv = new ImageSourceConverter(); if (this.WindowState == WindowState.Normal) { btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_highlight.png"); btnMax.ToolTip = "最大化"; } else { btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_highlight.png"); btnMax.ToolTip = "向下还原"; } } InitializeEvent(); } catch (Exception ex) { MessageBox.Show("加载失败:" + ex.Message); } }; this.StateChanged += delegate { if (this.WindowState == WindowState.Maximized) { System.Drawing.Size size = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size; this.Width = size.Width; this.Height = size.Height; } else { if (oldRect.Width != 0) { this.Width = oldRect.Width; this.Height = oldRect.Height; this.Top = oldRect.Top; this.Left = oldRect.Left; } } }; this.Closed += delegate { if (pickerWindow != null) { pickerWindow.Close(); } if (IsCloseApplication) { Application.Current.Shutdown(); Environment.Exit(0); } }; }
public void Init() { window.Style = (Style)App.Current.Resources["BaseWindowStyle"]; window.SourceInitialized += delegate(object sender, EventArgs e) { this.hwndSource = PresentationSource.FromVisual((Visual)sender) as HwndSource; this.hwndSource.AddHook(Win32.WindowProc); }; window.Loaded += delegate { try { ControlTemplate mainWindowTemplate = window.Template; ButtonUserControl btnMin = (ButtonUserControl)mainWindowTemplate.FindName("btnMin", window); ButtonUserControl btnMax = (ButtonUserControl)mainWindowTemplate.FindName("btnMax", window); ButtonUserControl closeBtn = (ButtonUserControl)mainWindowTemplate.FindName("btnClose", window); ButtonUserControl btnMenu = (ButtonUserControl)mainWindowTemplate.FindName("btnMenu", window); ButtonUserControl btnSkin = (ButtonUserControl)mainWindowTemplate.FindName("btnSkin", window); //隐藏菜单按钮 if (btnMenu != null) { btnMenu.Visibility = Visibility.Collapsed; } //隐藏调色按钮 if (btnSkin != null) { btnSkin.Visibility = Visibility.Collapsed; } if (window.ResizeMode == ResizeMode.NoResize) { btnMax.Visibility = Visibility.Collapsed; btnMin.Visibility = Visibility.Collapsed; } if (window.ResizeMode == ResizeMode.CanMinimize) { btnMax.IsEnabled = false; } if (window.ResizeMode == ResizeMode.CanResize || window.ResizeMode == ResizeMode.CanResizeWithGrip) { ImageSourceConverter imgConv = new ImageSourceConverter(); if (window.WindowState == WindowState.Normal) { btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_highlight.png"); btnMax.ToolTip = "最大化"; } else { btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_highlight.png"); btnMax.ToolTip = "向下还原"; } } btnMin.Click += delegate { oldRect = new Rect(window.Left, window.Top, window.Width, window.Height); window.WindowState = WindowState.Minimized; }; btnMax.Click += delegate { ImageSourceConverter imgConv = new ImageSourceConverter(); if (window.WindowState == WindowState.Normal) { oldRect = new Rect(window.Left, window.Top, window.Width, window.Height); window.WindowState = WindowState.Maximized; btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_restore_highlight.png"); btnMax.ToolTip = "向下还原"; } else { window.WindowState = WindowState.Normal; btnMax.ImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_normal.png"); btnMax.MouseEnterImgSource = (ImageSource)imgConv.ConvertFromString("pack://application:,,,/FYJ.Winui;component/Resources/btn_max_highlight.png"); btnMax.ToolTip = "最大化"; } }; closeBtn.Click += delegate { window.Close(); }; } catch (Exception ex) { MessageBox.Show("加载失败:" + ex.Message); } }; window.StateChanged += delegate { if (window.WindowState == WindowState.Maximized) { System.Drawing.Size size = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size; window.Width = size.Width; window.Height = size.Height; } else { window.Width = oldRect.Width; window.Height = oldRect.Height; window.Top = oldRect.Top; window.Left = oldRect.Left; } }; window.MouseLeftButtonDown += Window1_MouseLeftButtonDown; window.MouseMove += Window1_MouseMove; window.MouseLeave += Window1_MouseLeave; }