【WPF】自定义标题栏

2019-05-17  本文已影响0人  UnicornChen

上一篇我们说了去掉丑陋的标题栏变成无边框,这一篇我们说一下怎么制作自己想要的漂亮标题栏代替系统默认的。

在WPF中自定义窗体标题栏,首先需要将窗体的WindowStyle属性设置为None,隐藏掉WPF窗体的自带标题栏。然后可以在窗体内部自定义一个标题栏。

定义三大金刚键

后台的事件:

后台的事件:

#region 标题栏事件

        /// <summary>        /// 窗口移动事件

        /// </summary>        private void TitleBar_MouseMove(object sender, MouseEventArgs e)

        {

            if (e.LeftButton == MouseButtonState.Pressed)

            {

                this.DragMove();

            }

        }

        int i = 0;

        /// <summary>        /// 标题栏双击事件

        /// </summary>

        private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)

        {

            i += 1;

            System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();

            timer.Interval = new TimeSpan(0, 0, 0, 0, 300);

            timer.Tick += (s, e1) => { timer.IsEnabled = false; i = 0; };

            timer.IsEnabled = true;

            if (i % 2 == 0)

            {

                timer.IsEnabled = false;

                i = 0;

                this.WindowState = this.WindowState == WindowState.Maximized ?

                              WindowState.Normal : WindowState.Maximized;

            }

        }

        /// <summary>        /// 窗口最小化

        /// </summary>        private void btn_min_Click(object sender, RoutedEventArgs e)

        {

            this.WindowState = WindowState.Minimized; //设置窗口最小化        }

        /// <summary>        /// 窗口最大化与还原

        /// </summary>        private void btn_max_Click(object sender, RoutedEventArgs e)

        {

            if (this.WindowState == WindowState.Maximized)

            {

                this.WindowState = WindowState.Normal; //设置窗口还原            }

            else            {

                this.WindowState = WindowState.Maximized; //设置窗口最大化            }

        }

        /// <summary>        /// 窗口关闭

        /// </summary>

        private void btn_close_Click(object sender, RoutedEventArgs e)

        {

            this.Close();

        }

        #endregion 标题栏事件

给对应的按钮加上事件就可以了

上一篇 下一篇

猜你喜欢

热点阅读