WPF 自定义Metro Style窗体

2021-05-14 08:28

阅读:667

标签:btn   content   tor   情况   制作   button   显示   null   tran   

为了使WPF程序在不同版本的操作系统上保持一致的显示效果,我们需要重写WPF控件样式。这篇博客将展示如何创建一个Metro Style的WPF窗体。

首先先看一下最终窗体的效果图,

技术分享

通过截图我们可以看出来这个窗体由两部分组成,顶部为最小化和关闭按钮,其他区域为窗体的显示区域。请看下面的具体实现代码,

MetroWindow样式:

技术分享




                    
                
技术分享

新建一个ModernWindow类,

C#

技术分享
    public class ModernWindow : Window
    {
        private Button CloseButton;
        private Button MinButton;
        private TextBlock WindowTitleTbl;

        public ModernWindow()
        {
            this.Loaded += ModernWindow_Loaded;
        }

        private void ModernWindow_Loaded(object sender, RoutedEventArgs e)
        {
            // 查找窗体模板
            ControlTemplate metroWindowTemplate
                    = App.Current.Resources["MetroWindowTemplate"] as ControlTemplate;

            if (metroWindowTemplate != null)
            {
                CloseButton = metroWindowTemplate.FindName("CloseWinButton", this) as Button;
                MinButton = metroWindowTemplate.FindName("MinWinButton", this) as Button;

                CloseButton.Click += CloseButton_Click;
                MinButton.Click += MinButton_Click;

                WindowTitleTbl = metroWindowTemplate.FindName("WindowTitleTbl", this) as TextBlock;
            }
        }

        private void CloseButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Close();
        }

        private void MinButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            this.WindowState = System.Windows.WindowState.Minimized;
        }

        /// 
        /// 实现窗体移动
        /// 
        /// 
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            DragMove();

            base.OnMouseLeftButtonDown(e);
        }
    }
技术分享

现在我们就完成了Metro Style窗体了,现在对其进行应用。请看MainWindow实现:
XAML:

技术分享
技术分享

C#:

技术分享
    public partial class MainWindow : ModernWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
技术分享

现在就完成了Metro Style窗体的制作。
自Win8发布以来,越来越多的桌面应用开始实现Metro样式。现在也有很多WPF MetroUI库,例如:http://mui.codeplex.com/。我们可以根据项目的实际情况选择现有的Metro UI/Control,当然也可以自己写。

代码请点击这里下载。

感谢您的阅读。

WPF 自定义Metro Style窗体

标签:btn   content   tor   情况   制作   button   显示   null   tran   

原文地址:http://www.cnblogs.com/wangchaoyuana/p/7523542.html


评论


亲,登录后才可以留言!