概述

今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包,它许多开箱即用的好东西。

目前支持的NET Framework 4.6.2及更高版本、.NET Core 3.1, .NET 5 and .NET 6 (on Windows)。官网学习文档地址:https://mahapps.com/docs/    

风格赏析(部分展示)

  • Theme有两款,深色和浅色:下面只展示浅色主题

  • ​Progress进度条:这里提供了好几款,样式很优雅

  • datagrid:表格控件

  • hamburger

  • Dialogs:消息弹框

用法介绍

看了上面的控件风格,想必有很多小伙伴已经迫不及待想知道这套控件库如何在自己项目中使用了,接下来小编就带你正式体验MahApps.Metro.

首先,创建项目,然后在github上搜索引用:如果要体验预先发型版,可以勾选图片中红框部分

  1. MahApps内置风格和主题:

     <Application.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
    <!-- Theme setting -->
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Application.Resources>
  2. 使用MetroWindows:要开始全面的MahApps造型和全面的窗口支持,您需要将您的普通窗口更改为我们的MetroWindows。

    打开你的主窗口,通常命名为MainWindow.xaml,在打开窗口标记中添加名称空间属性

    xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    或者
    xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
  3. 前台xmal全部代码如下:

    <mah:MetroWindow x:Class="WpfApp8.StartView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    xmlns:cal="http://www.caliburnproject.org"
    xmlns:local="clr-namespace:WpfApp8"
    mc:Ignorable="d"
    GlowBrush="{DynamicResource MahApps.Brushes.Accent}"
    ResizeMode="CanResizeWithGrip"
    Title="StartView" Height="300" Width="600" WindowStartupLocation="CenterScreen">
    <StackPanel>
    <TextBox Name="TextContent"/>
    <Button x:Name="testBtn" Content="testBtn" Background="LightCyan"/>
    <ListBox Name="ListBoxItems" MinHeight="230" Background="LightGray"
    cal:Message.Attach="[Event SelectionChanged] = [Action ListBoxItems_SelectionChanged($source,$eventArgs)];
    [Event MouseUp]=[ListBoxItems_MouseUp($source,$eventArgs)]"
    />
    </StackPanel>
    </mah:MetroWindow>
  4. 您还需要修改窗口文件的代码,以便基类与XAML文件的MetroWindow类匹配:

    using MahApps.Metro.Controls;

    namespace WpfApp8
    {
    /// <summary>
    /// StartView.xaml 的交互逻辑
    /// </summary>
    public partial class StartView : MetroWindow
    {
    public StartView()
    {
    InitializeComponent();
    }
    ​ }
    }

    这样保存后重新编译运行,就会看到窗体的样式已经发生改变,完全变成了Metro风格。

    运行结果

源码下载

百度网盘链接:https://pan.baidu.com/s/1dD8HaoVDz6G8xeipRWaQ-Q

提取码:6666

技术群:添加小编微信并备注进群
小编微信:mm1552923   公众号:dotNet编程大全

介绍一款倍受欢迎的.NET 开源UI库的更多相关文章

  1. [教程]微信官方开源UI库-WeUI使用方法【申明:来源于网络】

    [教程]微信官方开源UI库-WeUI使用方法 [ 教程]微信官方开源UI库-WeUI使用方法 地址:http://www.weui.org.cn/?/article/1 微信公众号开发-WeUI使用说 ...

  2. 开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件

    背景 有这样一个需求,一位 React Suite(以下简称 rsuite)的用户,他需要一个 Table 组件能够像 Jira Portfolio 一样,支持树形数据,同时需要支持大数据渲染. 截止 ...

  3. Ligg.EasyWinApp-100-Ligg.EasyWinForm:一款Winform应用编程框架和UI库介绍

        本项目是一个Winform应用编程框架和UI库.通过这个该框架,不需任何代码,通过XML配置文件,搭建任意复杂的Windows应用界面,以类似Execel公式的方式实现基本的过程控制(赋值.条 ...

  4. Bootstrap Blazor 开源UI库介绍-Table 虚拟滚动行

    今天我们来介绍一下 Bootstrap Blazor 中 Table 组件的虚拟滚动行,什么是虚拟滚动呢,我查到的解释是:只渲染可视区域的列表项,非可见区域的 完全不渲染,在滚动条滚动时动态更新列表项 ...

  5. 微信官方开源UI库-WeUI

    概述 WeUI是一套同微信原生视觉体验一致的基础样式库,为微信Web开发量身设计,可以令用户的使用感知更加统一.包含button.cell.dialog.toast.article.icon等各式元素 ...

  6. 《介绍一款开源的类Excel电子表格软件》续:七牛云存储实战(C#)

    两个月前的发布的博客<介绍一款开源的类Excel电子表格软件>引起了热议:在博客园有近2000个View.超过20个评论. 同时有热心读者电话咨询如何能够在SpreadDesing中实现存 ...

  7. 介绍n款计算机视觉库/人脸识别开源库/软件

    计算机视觉库 OpenCV OpenCV是Intel®开源计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. OpenCV 拥有包括 300 多个 ...

  8. Linux下介绍一款不错的HTML编辑器

    编写HTML文档需要编辑器,在windows平台上我们可以用NotePad++,下面介绍一款Linux下的编辑器Komodo Edit,这是一款免费,开源的编辑器. 他对HTML的支持有其独到之处,我 ...

  9. C++100款开源界面库[转]

    (声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系列的 ...

随机推荐

  1. Net中事件的用法之二

    1.委托与事件的区别 事件对权限做了控制 1.委托可以直接调用 事件不可以直接调用 2.委托允许外面直接赋值 事件不允许外面直接赋值 2.事件与委托的实例比较 using System; using ...

  2. Parrot Linux安装教程

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.Parrot Linux介绍 Parrot 是一个由开发人员和安全专家组成的全球社区,他们共同构建一个共享的工具框架,使他们的工作更轻松.标准 ...

  3. 实现一个cache

    实现一个LRU cache,定义get函数和set函数,cache是固定长度的,当cache已经满,那么就删除一直没有被更新的记录,然后将新的记录放进去. LRU: 全称是Least Recently ...

  4. IDEA导入第三方jar包

    IDEA导入第三方jar包 在Module下新建一个Directory,命名为lib或者libs,然后直接将目标jar包文件复制到这个新建的Directory中. 右键选中导入的jar包,选择Add ...

  5. Snort中pcre和正则表达式的使用

    Snort中pcre和正则表达式的使用 1. 题目描述 If snort see two packets in a TCP flow with first packet has "login ...

  6. 服务端处理 Watcher 实现 ?

    1.服务端接收 Watcher 并存储 接收到客户端请求,处理请求判断是否需要注册 Watcher,需要的话将数据节点 的节点路径和 ServerCnxn(ServerCnxn 代表一个客户端和服务端 ...

  7. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法 ?

    1.关闭缓存 swap; 2.堆内存设置为:Min(节点内存/2, 32GB); 3.设置最大文件句柄数: 4.线程池+队列大小根据业务需要做调整: 5.磁盘存储 raid 方式--存储有条件使用 R ...

  8. 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 ?

    MyISAM: 不支持事务,但是每次查询都是原子的: 支持表级锁,即每次操作是对整个表加锁: 存储表的总行数: 一个 MYISAM 表有三个文件:索引文件.表结构文件.数据文件: 采用菲聚集索引,索引 ...

  9. IOS动态调试汇总-傻瓜版教程

    参考博客: https://juejin.cn/post/6872764160640450574#heading-4 (断点后续指令) https://www.jianshu.com/p/67f08a ...

  10. 220v-5v稳压电路

    5V整流电路原理 先对电路进行整流 整流电路:利用单向导电器件将交流电转换成脉动直流电路,再用电容进行滤波 滤波电路:利用储能元件(电感或电容)把脉动直流电转换成比较平坦的直流电,然后对电路进行稳压 ...