【WPF】自定义标题栏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【WPF】自定义标题栏相关的知识,希望对你有一定的参考价值。

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

在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 标题栏事件

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

wpf怎么自定义窗口

wpf怎么自定义窗口,网上说改变AllowsTransparency属性为True,但是发现鼠标悬停在窗口边缘不能拖动改变大小,怎么实现这种效果,在线等答案。

参考技术A 普通WPF窗口从一个Window1(Show方式)打开另一个Window2,只要设置Window2.Owner=Window1即可。这样Window2的显示和隐藏可由Window1自动控制。但使用WPFUserControlHost到WinForm时,实现就难了。刚才找到了解决方法:Windowwin=newWindow2();HwndSourcewinformWindow=(System.Windows.Interop.HwndSource.FromDependencyObject(this)asSystem.Windows.Interop.HwndSource);if(winformWindow!=null)追问

很抱歉,小弟刚学wpf不久,想做一个类似酷狗音乐的窗口,但是网上的源码都不能拖动改变窗口大小,我只是想自定义窗口样式,没有涉及窗口调用,使用blend也没法对window标题栏拆分,所以不知道怎么好了。

以上是关于【WPF】自定义标题栏的主要内容,如果未能解决你的问题,请参考以下文章

WPF 自定义标题栏

wpf 做一个好看的标题栏?

如何自定义 WPF 状态栏布局?

在WPF中,当在无边框窗口中拖动自定义的标题栏时,窗口会恢复,如何实现呢?

WPF中自定义标题栏时窗体最大化处理之WindowChrome

自定义CAD标题栏方法介绍