WPF MaterialDesign 初学项目实战(2)首页导航栏样式

news2024/11/27 22:43:43

其他内容

WPF MaterialDesign 初学项目实战(0):github 项目Demo运行
WPF MaterialDesign 初学项目实战(1)首页搭建

MaterialDesign

确保运行了初学项目实战(0)
MaterialDesign给我们提供了很多的样式库,我们可以在运行的demo文件中查看到具体的样式和相关的信息:
在这里插入图片描述
在键入首字母时也会自动提示
在这里插入图片描述
选择按钮的时候也有代码提示,点击代码会跳转到Github的库里面,可以看到原始的代码
在这里插入图片描述
github仓库样式

在这里插入图片描述
这里的样式特别多,而且有没实际展示的效果,所以推荐还是直接看按钮示例来选择按钮样式

效果演示

<StackPanel Orientation="Horizontal" DockPanel.Dock="Right">
    //默认按钮控件
	<Button Content="一" />
    //样式效果为去掉边框
    <Button Content="口" Style="{StaticResource MaterialDesignFlatMidBgButton}"/>
    <Button Content="X" Style="{StaticResource MaterialDesignFlatMidBgButton}"/>
</StackPanel>

在这里插入图片描述

如何添加图片

Xaml代码

  • Iamge|Width+Height+Source:设置宽,高,文件路径
    • Image.Clip:图片裁剪
      • EllipseGemetry:图片裁剪属性

在WPF里面添加文件夹,命名随意,我习惯用static

在这里插入图片描述
将添加的图片设置为资源
在这里插入图片描述
在这里插入图片描述
引用图片

<Image Width="25"
   Height="25" Source="/static/img/User/icon.png"/>

实现效果
在这里插入图片描述
使用Image.Clip进行图片裁剪

<Image Width="25"
       Height="25"
        Source="/static/img/User/icon.png">//对应你文件的路径
     <Image.Clip>
         <EllipseGeometry //圆形裁剪
             Center="12.5,12.5"//设置中心点
             RadiusX="12.5"//裁剪X轴长度
             RadiusY="12.5"//裁剪Y轴长度
             />
     </Image.Clip>
 </Image>

在这里插入图片描述

添加事件

添加按钮事件

将按钮添加名称

<Button x:Name="minBtn" Content="一"
        Style="{StaticResource MaterialDesignFlatMidBgButton}" />
<Button x:Name="maxBtn" Content="口"
        Style="{StaticResource MaterialDesignFlatMidBgButton}" />
<Button x:Name="closeBtn" Content="X"
        Style="{StaticResource MaterialDesignFlatMidBgButton}" />

添加按钮事件

namespace MyToDo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            //最小化
           + minBtn.Click += (s, e) => { this.WindowState = WindowState.Minimized; };
            //铺满全屏/默认
           + maxBtn.Click += (s, e) =>
           + {
           +     if(this.WindowState == WindowState.Maximized)
           +     {
           +         this.WindowState = WindowState.Normal;
           +     }
           +     else
           +     {
           +         this.WindowState = WindowState.Maximized;

           +    }
           + };
            //关闭窗口
           + closeBtn.Click += (s, e) => { this.Close(); };


        }


    }
}

运行效果
在这里插入图片描述
PS:这里使用了Lambda表达式,类似于ES6的语法,如果学过web前端应该比较熟悉

closeBtn.Click += (s, e) => { this.Close(); };
//等价于
closeBtn.Click += MinBtn_Click;
private void MinBtn_Click(object sender, RoutedEventArgs e)
        {
             this.Close();
        }

添加窗口拖动事件

选中拖动的窗口,添加x:name

<DockPanel>
   <materialDesign:ColorZone Padding="16"
        + x:Name="MainBody"
        materialDesign:ElevationAssist.Elevation="Dp4"
        DockPanel.Dock="Top"
        Mode="PrimaryMid">

namespace MyToDo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
			.........
			            + //窗口拖动移动
            + MainBody.MouseMove += (s, e) =>
            + {
            + 
            +     if(e.LeftButton == MouseButtonState.Pressed)//如果鼠标左键按下
            +     {
            +         this.DragMove();//窗口拖动移动
            +     }
            + };
            + //双击放大事件
            + MainBody.MouseDoubleClick += (s, e) =>
            + {
            +     if (this.WindowState == WindowState.Maximized)
            +     {
            +         this.WindowState = WindowState.Normal;
            +     }
            +     else
            +     {
            +         this.WindowState = WindowState.Maximized;
            + 
            +     }
            + };

        }

    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务框架【笔记-Nacos环境隔离】

Nacos注册中心 环境隔离 - namespace Nacos 中服务存储和数据存储的最外层都是一个名为namespace的东西&#xff0c;用来做最外层隔离 Nacos默认的命名空间&#xff1a; 创建命名空间复制命名空间ID启动Orderservice服务&#xff0c;在nacos服务列表可以看到环境隔离之后的服…

vue实现电梯锚点导航

1、目标效果 最近喝了不少的咖啡、奶茶&#xff0c;有一个效果我倒是挺好奇怎么实现的&#xff1a; &#xff08;1&#xff09;点击左侧分类菜单&#xff0c;右侧滚动到该分类区域 &#xff08;2&#xff09;右侧滑动屏幕&#xff0c;左侧显示当前所处的分类区域 这种功能会出现…

Jmeter进阶使用:BeanShell实现接口前置和后置操作

一、背景 我们使用Jmeter做压力测试或者接口测试时&#xff0c;除了最简单的直接对接口发起请求&#xff0c;很多时候需要对接口进行一些前置操作&#xff1a;比如提前生成测试数据&#xff0c;以及一些后置操作&#xff1a;比如提取接口响应内容中的某个字段的值。举个最常用…

XDC约束技巧 之 I/O篇 (上)

《XDC约束技巧之时钟篇》中曾对I/O约束做过简要概括&#xff0c;相比较而言&#xff0c;XDC中的I/O约束虽然形式简单&#xff0c;但整体思路和约束方法却与UCF大相径庭。加之FPGA的应用特性决定了其在接口上有多种构建和实现方式&#xff0c;所以从UCF到XDC的转换过程中&#x…

都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平

一、博弈Ai&#xff1a;GPT3.5版 演示&#xff1a;https://chat.bo-e.com/ 1、充当英语发言助手 评分&#xff1a;10分 总结&#xff1a;完整满足了指令需求 2、充当英汉互译器 评分&#xff1a;8分 总结&#xff1a;基本满足了我的指令需求。但是有点啰嗦&#xff0c;扣…

MySQL---视图(定义、修改、更新、重命名、删除)

1. 定义视图 视图&#xff08;view&#xff09;是一个虚拟表&#xff0c;非真实存在&#xff0c;其本质是根据SQL语句获取动态的数据集&#xff0c;并为其命 名&#xff0c;用户使用时只需使用视图名称即可获取结果集&#xff0c;并可以将其当作表来使用。 数据库中只存放了…

SIR模型与R模拟

SIR病毒模型R模拟 文章目录 SIR病毒模型R模拟[toc]1.SIR病毒模型2.R模拟 1.SIR病毒模型 SIR病毒模型的的三个字母分别为病毒传播过程中的三种状态&#xff0c;其中 S&#xff0c;表示易感染者&#xff0c;即没有被感染病毒的人群I&#xff0c;表示已感染者&#xff0c;即被感…

Spring_jdbcTemplate基本使用

文章目录 一、导入spring-jdbc和spring-tx坐标二、创建数据库表和实体在applicationContext.xml中配置连接池和JdbcTemplate在test数据库中创建account表 三、创建JdbcTemplate对象四、执行数据库操作 一、导入spring-jdbc和spring-tx坐标 <dependency><groupId>o…

Vue.js快速入门

文章目录 一、Vue基础1.1 渐进式框架​1.2 第一个Vue程序1.3 el 挂载点1.4 data 数据对象 二、Vue 指令2.1 v-text 文本值2.2 v-html 标签元素2.3 v-on 绑定事件2.4 v-show 隐藏2.5 v-if 消除2.6 v-bind 属性值2.7 v-for 生成列表2.8 v-model 双向数据绑定 三、axios 网络请求库…

EXCEL数组公式的理解和技巧(未完成)

1 小心特例 frenquce 会划分为n1个区间 SUMPRODUCT(IF(FREQUENCY(B5:B18,B5:B18)>0,1,0)*IF(VALUE(MID(A5:A18,6,1))5,1,0)) 2 用0/ 和1/0 数组公式来解决问题 SUMPRODUCT(1/COUNTIF(B5:B18,B5:B18)) 这个只返回了B列里不重复的数据个数&#xff0c;确实是10个 SUMPRODU…

在 Windows 上安装 kind

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 kind。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 kind是什么 kind 是一个使用 Docker 容器“节点”运行 Kubernetes 集群的工具。使用 kind 工具搭建的 Kubernetes…

【Linux Network】应用层协议——HTTP

目录 1. 认识URL 2. urlencode和urldecode urlencode例子&#xff1a; urldecode例子&#xff1a; 3. HTTP协议格式 3.1 HTTP请求&#xff1a; 3.2 HTTP响应&#xff1a; 3.3 HTTP的方法&#xff1a; 3.4 GET方法和POST方法的区别 3.5 HTTP的状态码&#xff1a; 3.6 HTTP常见He…

Python学习20:温度转换 II(python123)

温度的刻画有两个不同体系&#xff1a;摄氏度&#xff08;Celsius&#xff09;和华氏度&#xff08;Fabrenheit&#xff09;。‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‫‪‪‪‪‪‫‪ 请编写程序将用户输入华氏度转换为摄氏度&#xff…

参会记录|春日研学 · 踏歌前行 —— MAS 实验室内部学术研讨会

前言&#xff1a;2023年5月12日&#xff08;周五&#xff09;晚&#xff0c;实验室在江苏苏州天街附近举行了一次内部研讨会&#xff0c;主题聚焦当今学术界研究前沿和实验室下一阶段发展规划。会议期间&#xff0c;首先是各位与会博士生畅所欲言&#xff0c;探讨当前学术前沿&…

数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)

目录 什么是图 抽象数据类型定义 常见术语 无向图 有向图 网络 邻接点 度&#xff08;出度、入度&#xff09; 稀疏图 稠密图、完全图 边密度 邻接矩阵表示法 用二维数组存储 用一维数组存储 邻接矩阵的好处 邻接矩阵的坏处 邻接表表示法 指针数组-链表存储…

ES的可视化工具-Kibana的安装和使用

【前言】 Kibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索&#xff0c;查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化&#xff0c;以图表的形式展现出来。 下面是Kibana的安装步骤&#xff0c;控…

Vue项目的搭建和启动

文章目录 一、安装配置 node.js1.1 下载安装1.2 配置环境变量1.3 修改模块下载位置1.4 设置淘宝镜像 二、创建启动 Vue三、开发环境 VSCode3.1 开发插件3.2 Vue 项目结构 提示&#xff1a;以下是本篇文章正文内容&#xff0c;前端系列学习将会持续更新 一、安装配置 node.js …

【重新定义matlab强大系列六】利用matlab进行一维滤波or二维滤波

&#x1f517; 运行环境&#xff1a;matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

NVM —— 你把我玩明白

前期回顾 纯前端 根据目录解析word,拆分不同段落_彩色之外的博客-CSDN博客纯前端 解析 wordhttps://blog.csdn.net/m0_57904695/article/details/130503211?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&#xff1a;开发技巧 目录 &#x1f37a; 下载 及 配置镜像 …

如何设计测试用例以及常用的黑盒测试方法

目录 如何设计测试用例&#xff1f; 设计测试用例的万能公式 ①功能测试 (用户的基本功能需求&#xff09; ②性能测试 ③易用性&#xff08;考虑用户体验&#xff09;测试 ④兼容性测试 ⑤界面&#xff08;UI,外观&#xff09;测试 ⑥安全测试 常用黑盒测试方法 …