WPF快速开发(2):图标库知识点

文章目录

  • 前言
  • 知识点
    • windows资源
    • Style:样式
      • Setter:属性
        • 继承关系
      • Trigger:触发器
    • WPF层级划分
    • 数据绑定
      • 声明数据上下文
      • 绑定
      • 数据模板

前言

图标资源下载 iconfont

知识点

windows资源

  • Window.Resources:资源位置声明
  • X:Key:资源Id,用于前端的xaml
  • X:Name:控件Id,用于后端的程序标记

Style:样式

简单样例

<Window.Resources><!--x:Key:资源Id,TargetType:目标控件类型--><Style x:Key="DefaultText" TargetType="TextBlock"><!--Setter 设置属性--><Setter Property="FontSize"Value="50" /></Style>
</Window.Resources>

Setter:属性

用于设置控件属性

  • 可以直接写,也可以在Style.Setters里面写
<Style x:Key="DefaultText" TargetType="TextBlock"><!--Setter 设置属性--><Setter Property="FontSize"Value="50" />
</Style>
<Style x:Key="DefaultText" TargetType="TextBlock"><!--Setter 设置属性--><Style.Setters><Setter Property="FontSize"Value="50" /></Style.Setters>
</Style>

使用属性使用Style=“{StaticResource 样式名}”

<TextBlock Text="文字" Style="{StaticResource DefaultText}" />

继承关系

  • 一个控件只能有一个Style
  • 使用 BasedOn=“{StaticResource 样式}”
  • 继承为覆盖关系。重复设置的属性以最后的为主
  • 行内样式>Style样式>Style继承样式

Trigger:触发器

但满足一个条件时动态触发,对属性进行修改

<!--x:Key:资源Id,TargetType:目标控件类型-->
<Style x:Key="DefaultText" TargetType="TextBlock"><!--Setter 设置属性--><Style.Setters><Setter Property="FontSize" Value="60" /><Setter Property="Foreground" Value="Green" /></Style.Setters><!--触发器设置--><Style.Triggers><!--IsMouseOver 即 鼠标悬停时触发--><Trigger Property="IsMouseOver" Value="True"><Setter Property="FontSize" Value="100"/><Setter Property="Foreground" Value="Red"/><Setter Property="FontWeight" Value="Bold"/></Trigger></Style.Triggers>
</Style>
Property是触发属性,Value是值。即Property=value的时候触发
<Trigger Property="IsMouseOver" Value="True">

常用的触发属性

  • IsMouseOver:鼠标悬停

WPF层级划分

在这里插入图片描述

数据绑定

在这里插入图片描述

声明数据上下文

  • 命名规范。默认为xxxViewModel
  • 声明ViewModel类。所有绑定属性为public
  • 在View里面实例化

事例

namespace WpfApp2
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{private MainWindowViewModel ViewModel { get; set; }public MainWindow(){ViewModel = new MainWindowViewModel();this.DataContext = ViewModel;InitializeComponent();}}public class MainWindowViewModel{public string Title { get; set; }public Person Person { get; set; }public List<Person> Persons { get; set; }public MainWindowViewModel(){Title = "我是标题";Person = new Person(){Name = "小刘",Age = 26};Persons = new List<Person> {new Person(){Name = "小明",Age = 26},new Person(){Name = "小红",Age = 26},new Person(){Name = "小兰",Age = 26},};}}public class Person{public string Name { get; set; }public int Age { get; set; }}
}

绑定

绑定使用{Binding value}的形式

<!--字符串绑定,Title是DataContext的属性-->
<TextBlock Text="{Binding Title}" FontSize="50" /><!--类绑定-->
<UniformGrid Columns="2"DataContext="{Binding Person}"><!--多层板Bind调用--><TextBlock Text="{Binding Name}"FontSize="50" /><TextBlock Text="{Binding Age}"FontSize="50" /></UniformGrid>

数据模板

用于绑定集合类型的数据

<!--数据模板,ItemsSorece绑定集合数据源--><ItemsControl ItemsSource="{Binding Persons}"><!--排版布局--> <ItemsControl.ItemsPanel><ItemsPanelTemplate><StackPanel /></ItemsPanelTemplate></ItemsControl.ItemsPanel><!--内容--><ItemsControl.ItemTemplate><DataTemplate><!--UniformGrid--><UniformGrid Columns="2"><!--多层板Bind调用--><TextBlock Text="{Binding Name}"FontSize="50" /><TextBlock Text="{Binding Age}"FontSize="50" /></UniformGrid></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>

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

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

相关文章

Kafka 实时处理Stream与Batch的对比分析

Kafka 实时处理Stream与Batch的对比分析 一、简介1. Kafka的定义和特点2. Kafka实时处理基础架构 二、Stream和Batch1. Stream和Batch的区别2. 对比Stream和Batch的优缺点Stream的优缺点Batch的优缺点 三、使用场景1. 使用场景对比Batch使用场景Stream使用场景 2. 如何选择Stre…

PHP服务器文件日志功能

php文件日志功能 <?php w_log(123,test/); w_log(array(a>1),test/); function w_log($data, $path log/) {$root_pathstr_replace(\\, /, dirname(dirname(__FILE__)));//改成你自己目录$dir $root_path . /log/ . $path;if (!is_dir($dir)) {mkdir($dir, 0777, tr…

2023年JAVA最新面试题

2023年JAVA最新面试题 1 JavaWeb基础1.1 HashMap的底层实现原理&#xff1f;1.2 HashMap 和 HashTable的异同&#xff1f;1.5 Collection 和 Collections的区别&#xff1f;1.6 Collection接口的两种区别1.7 ArrayList、LinkedList、Vector者的异同&#xff1f;1.8 String、Str…

【云原生】Minikube 部署

minikube 介绍 minikube 是本地 Kubernetes&#xff0c;专注于让 Kubernetes 易于学习和开发。 您所需要的只是 Docker&#xff08;或类似兼容的&#xff09;容器或虚拟机环境&#xff0c;只需一条命令即可使用 Kubernetes&#xff1a;minikube start 环境准备 2 个或更多 …

前端JS 展示上传图片缩略图(本地图片读取)

需求&#xff1a; 点击上传图片按钮&#xff0c;选择图片以后&#xff0c;不请求后端接口&#xff0c;直接将图片展示在缩略图中。 解决方案&#xff1a; 使用 FileReader 和 FileReader 中的 readAsDataURL 方法。 第一步 从input[type“file”] (上传文件标签) 里面拿到fil…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

AutoSAR系列讲解(实践篇)9.2-信息发送的Filter机制

再强调一遍哈,这几节的内容大家看不懂没关系。都属于不常用的知识,仅作了解,假如用到了可以再挖出来看看。还有一点,很多的英文不太好翻译,比如这里的Filter,翻译成滤波,筛选我感觉都不太贴切,干脆就直接叫Filter了,之后应该会出现类似的英文,博主尽量想办法让大家理…

C语言每日一题:6.移除元素+合并两个有序数组。

第一题&#xff1a;移除元素 思路一&#xff1a; 一&#xff1a;暴力查找的方法&#xff1a; 1.找到对应val值的下标&#xff0c;返回数组的下标。 2.删除对应的下标&#xff0c;从前向后用后面覆盖前面。当后一个是数组最后一个数值是就赋值结束了&#xff08;注意数组越界的问…

ASCII对照表

文章目录 介绍ASCII对照表 介绍 ASCII(American Standard Code for Information Interchange)是美国信息交换标准代码。基于拉丁字母的一套电脑编码系统&#xff0c;主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准&#xff0c;并等同于国际标准ISO/IEC 646。AS…

width: calc(~“100% - 267px“);动态css 调样式

.result-filtering {color: #8b8b8b;display: flex;// width: 82.6%;width: calc(~"100% - 267px");}

leetcode131. 分割回文串(java)

分割回文串 leetcode131. 分割回文串题目描述回溯算法 动态规划代码演示 回文字符串 leetcode131. 分割回文串 题目描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一…

[踩坑记] Linux环境下bitsandbytes安装是后报错解决

情境 在测试LLM Webui demo的时候&#xff0c;安装依赖pip install bitsandbytes0.40.0 后&#xff0c;python -m module name 时报错:CUDA Setup failed despite GPU being available. Please run the following command to get more information。 解决方法 从git hub 官方…

5.python设计模式【单例模式】

内容&#xff1a;保证一个类只有一个实例&#xff0c;并提供一个访问它的全局访问点角色&#xff1a; 单例&#xff08;Singleton&#xff09; UML图 举个例子&#xff1a; 需求&#xff1a;一个类只能实例化一个对象&#xff0c;不能实例化多个对象 from abc import abstract…

RocketMQ教程-(5)-功能特性-事务消息

事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。 事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。…

Kotlin与Java语法对比学习

定义变量 // Kotlin val i: Int 10 // 定义一个整数变量 val d: Double 10.0 // 定义一个双精度浮点数变量 val b: Boolean true // 定义一个布尔变量 val c: Char a // 定义一个字符变量 val s: String "Hello, World!" // 定义一个字符串变量 val arr: …

PostgreSQL查看数据库对象大小

PostgreSQL查看数据库对象大小 PostgreSQL查看数据库对象大小1、查看某个数据库大小2、查看多个数据库大小3、按顺序查看索引大小4、查看所有对象的大小 PostgreSQL查看数据库对象大小 1、查看某个数据库大小 select pg_size_pretty(pg_database_size(tzqdb));2、查看多个数据…

【已解决】VS报错C2760

在项目中增加第三方库的时候&#xff0c;出现了C2760的报错&#xff0c;常用路径都设置好了&#xff0c;判断可能是属性设置的问题&#xff0c;就查了一下&#xff0c;确实一下就改好了 操作流程&#xff1a; 项目右键后打开最下面的属性 属性——》C/C——》语言——》符合…

数据库触发器简介——修改数据的触发器、删除数据的触发器

1.修改数据的触发器 修改数据的触发器 create trigger tb_user_update_triggerafter update on tb_user for each row begininsert int user_logs(id,operation,operate_time,operate_id,operate_params)VALUES(null,update,now(),new.id,concat(更新之前的数据&#xff1a;i…

如何设置Axure中文版 Mac系统下axurerp10怎么设置成中文

有许多小伙伴肯定想知道axure rp 10怎么转换为中文版&#xff0c;接下来就为大家带来最详细的汉化教程&#xff0c;大家可以根据教程一步一步操作&#xff0c;保证可以汉化成功&#xff01; 准备工作 安装好axurerp10 axurerp10汉化包 百度网盘链接: 百度网盘 请输入提取码 …

2023牛客暑期多校训练营2(D/E/F/H/I/K)

目录 D.The Game of Eating E.Square F.Link with Chess Game H.0 and 1 in BIT I.Link with Gomoku K.Box D.The Game of Eating 思路&#xff1a;倒着贪心。因为正着贪会导致一种局面&#xff1a;我选了当前喜爱值最大的菜&#xff0c;但是就算我不选这个菜&#xff0…