WPF设计学习记录滴滴滴4

    <Button x:Name="btn"Content="退出"Width=" 100"Height="25"Click="btn_Click" IsDefault="True"/>
<Button x:Name="btn"           <!-- 控件标识:定义按钮的实例名称为"btn",用于后台代码(如C#)中引用该控件 -->Content="退出"          <!-- 显示文本:设置按钮上显示的文本内容为"退出" -->Width=" 100"            <!-- 控件宽度:设置按钮宽度为100设备无关单位(注意值前空格会被XAML自动忽略) -->Height="25"             <!-- 控件高度:设置按钮高度为25设备无关单位 -->Click="btn_Click"       <!-- 事件绑定:将按钮的点击事件关联到后台代码中的btn_Click方法 -->IsDefault="True"/>      <!-- 默认行为:设置该按钮为窗口默认按钮,用户按Enter键时会自动触发点击事件 -->

<WrapPanel><TextBlock Text="这是一个TextBlock文字块" Margin="5"/><TextBlock Text="粗体文字" FontWeight="Bold" Margin="5"/><TextBlock Text="粗体文字" FontWeight="Light" Margin="5"/><TextBlock Text="斜体文字" FontStyle="Italic" Margin="5"/><TextBlock Text="微软雅黑" FontFamily="Microsoft YaHei UI" Margin="5"/><TextBlock Text="大号字体" Foreground="Red" Margin="5"/><TextBlock Text="红色文字" Foreground="Yellow" Margin="5"/><TextBlock Text="底色文字" Foreground="Yellow" Background="Red" Margin="5"/><TextBlock Background="LightGray" Height="25"><Run Foreground="Red">这行文字</Run><Run Foreground="Green">由三部分</Run><Run Foreground="Blue">组成</Run></TextBlock><Grid Width="150" Height="100" Margin="5" Background="LightGoldenrodYellow"><TextBlock Text="这段文字体现了文字的文本换行属性TextWrapping" TextWrapping="Wrap" Margin="10"/></Grid><!--使用Run--><Grid><TextBlock x:Name="txtBlock"Width="320"Height="100"FontSize="15"FontFamily="微软雅黑"FontWeight="Black"FontStretch="Condensed"Foreground="#dddddd"Background="Teal"TextAlignment="Center"TextWrapping="Wrap"TextTrimming="CharacterEllipsis"Margin="10" Padding="5"HorizontalAlignment="Left"VerticalAlignment="Center"LineHeight="30"ToolTip="《临江仙·滚滚长江东逝水》"><Run Foreground="#CDB632" TextDecorations="Underline">滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。</Run><Run Text="白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。"/></TextBlock></Grid>
</WrapPanel>
一、基础文本控件配置
  1. 基础样式组合
<TextBlock Text="粗体文字" FontWeight="Bold" Margin="5"/>
<TextBlock Text="斜体文字" FontStyle="Italic" Margin="5"/>
    • 实现粗体/斜体效果,Margin="5"统一设置四边5单位间距
    • 注意:FontWeight="Light"在WPF中有效,但需确保字体支持该权重

字体与颜色定制

<TextBlock Text="微软雅黑" FontFamily="Microsoft YaHei UI"/>
<TextBlock Text="大号字体" Foreground="Red"/> <!-- 实际未设置FontSize属性 -->
<TextBlock Text="红色文字" Foreground="Yellow"/> <!-- 文本内容与颜色反讽设计 -->
  • 支持中文字体名称直接调用(需系统安装对应字体)
  • 警示案例:第四个控件Background="Red"与黄色前景形成高对比警示效果
二、进阶排版技术
  1. 分段式文本(Run元素)
<TextBlock><Run Foreground="Red">这行文字</Run><Run Foreground="Green">由三部分</Run><Run Foreground="Blue">组成</Run>
</TextBlock>
    • 允许同一TextBlock内分段设置样式
    • 支持混合使用TextDecorations="Underline"等修饰属性

诗词排版案例

<TextBlock LineHeight="30" TextAlignment="Center" TextTrimming="CharacterEllipsis"><Run Foreground="#CDB632" TextDecorations="Underline">滚滚长江东逝水...</Run><Run>白发渔樵江渚上...</Run>
</TextBlock>
  • LineHeight="30"控制行距为2倍默认高度(基于15px字体)
  • TextTrimming="CharacterEllipsis"实现溢出文本以"..."省略
  • ToolTip属性实现悬停显示完整诗词标题
三、布局与容器整合
  1. 自适应布局容器
<Grid Width="150" Height="100" Background="LightGoldenrodYellow"><TextBlock TextWrapping="Wrap" Margin="10"/>
</Grid>
    • TextWrapping="Wrap"强制文本在容器边界换行
    • 嵌套布局时,Grid容器通过明确尺寸约束文本域
扩展说明
  1. 颜色值规范
    • 支持十六进制(#CDB632)、命名颜色(Red)、系统资源(SystemColors
    • 推荐使用ARGB格式(如#80FF0000半透明红)增强设计灵活性
  2. 排版精度控制
    • TextAlignment="Center"实现水平居中
    • VerticalAlignment="Center"确保容器内垂直居中
    • Padding="5"在文本与容器边界间添加缓冲空间
  3. 字体技术细节
    • FontStretch="Condensed"压缩字符宽度(需字体支持)
    • 微软雅黑在Windows系统默认安装,跨平台需字体回退策略

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="用户名" Margin="5"/><TextBox x:Name="txtbox" Width="100" Height="25" MaxLength="10" CharacterCasing="Upper"/><Button x:Name="btn" Content="确定" Height="25" Margin="5 0" Click="btn_Click"/></StackPanel>
<!-- 水平布局容器:创建水平排列的堆叠面板,在父容器中水平和垂直居中 -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"><!-- 标签控件:显示"用户名"文本,四边保留5单位间距 --><TextBlock Text="用户名" Margin="5"/><!-- 输入框控件:设置输入限制与格式规范 --><TextBox x:Name="txtbox" Width="100" Height="25"MaxLength="10"              <!-- 最大字符数:限制输入不超过10个字符 -->CharacterCasing="Upper"/>   <!-- 自动转换:强制所有输入字母转为大写 --><!-- 功能按钮:绑定点击事件实现交互逻辑 --><Button x:Name="btn" Content="确定" Height="25"Margin="5 0"                <!-- 边距优化:左右无间距,上下保留5单位间距 -->Click="btn_Click"/>          <!-- 事件绑定:关联后台btn_Click方法 -->
</StackPanel>

// 创建文本范围对象:获取RichTextBox从开头到结尾的全部内容 
TextRange txtRange = new TextRange(richTxtBox.Document.ContentStart,   // 内容起始点(逻辑位置)richTxtBox.Document.ContentEnd      // 内容结束点(包含最后一个字符后的逻辑位置)
);// 弹窗显示纯文本内容(自动过滤所有格式和控件)
MessageBox.Show(txtRange.Text);         // 实际应用场景:文本导出预览/字数统计 // 创建新段落容器(相当于HTML的<p>标签)
Paragraph paragraph = new Paragraph();  // 默认带段落间距,可通过Margin属性调整 // 创建带动态时间的文本片段(类似<span>标签)
Run run = new Run($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); 
run.Foreground = Brushes.Black;         // 设置字体颜色(等效于Foreground="#FF000000")// 将文本片段插入段落 
paragraph.Inlines.Add(run);             // 支持多Run组合实现彩色混排文本 // 将段落添加到富文本框文档末尾 
richTxtBox.Document.Blocks.Add(paragraph);  // Blocks集合管理段落/表格等块级元素 

二、扩展技术说明(WPF富文本处理)
1. 文档对象模型
对象作用
TextRange跨段落文本操作(支持格式复制/批量修改)
Paragraph段落容器(可设置TextIndent首行缩进/LineHeight行高)
Run基础文本单元(最小样式应用范围,改变属性会中断样式继承)

<StackPanel><RichTextBox x:Name="richTxtBox" Margin="10 5" Height="270"><FlowDocument><Paragraph>RichTextBox富文本框控件到底有什么强大的功能?<Bold Foreground="DarkRed">请看下面.</Bold></Paragraph><Paragraph Foreground="Blue">RichTextBox唯一的子元素是FlowDocument</Paragraph><Paragraph Foreground="DarkGreen">FlowDocument是指流文档,一个流文档由一个或多个Block构成,所以它有一个Blocks属性。Block只是一个抽象基类,所以流文档的子元素其实是继承了Block的子类,例如:</Paragraph><List MarkerOffset="25" MarkerStyle="Decimal" StartIndex="1"><ListItem><Paragraph>BlockUIContainer(UI元素容器)</Paragraph></ListItem><ListItem><Paragraph>List(有序列表)</Paragraph></ListItem><ListItem><Paragraph>Paragraph(段落)</Paragraph></ListItem><ListItem><Paragraph>Section(分组)</Paragraph></ListItem><ListItem><Paragraph>Table(网格)</Paragraph></ListItem></List></FlowDocument></RichTextBox><Button x:Name="btn" Content="确定" Margin="10,5" Click="btn_Click"/>
</StackPanel>
<!-- 垂直堆叠容器:默认垂直排列子元素 -->
<StackPanel><!-- 富文本编辑器:支持复杂内容排版与交互 --><RichTextBox x:Name="richTxtBox" Margin="10 5"        <!-- 边距设置:左右10单位,上下5单位 -->Height="270">       <!-- 固定高度:适合显示多段落内容 --><!-- 流式文档容器:承载结构化富文本内容 --><FlowDocument><!-- 混合样式段落:演示格式嵌套 --><Paragraph>RichTextBox富文本框控件到底有什么强大的功能?<Bold Foreground="DarkRed">请看下面.</Bold>  <!-- 粗体+颜色复合样式 --></Paragraph><!-- 带颜色段落:说明核心概念 --><Paragraph Foreground="Blue">RichTextBox唯一的子元素是FlowDocument  <!-- 重要约束条件 --></Paragraph><!-- 分层说明段落:解释文档结构 --><Paragraph Foreground="DarkGreen">FlowDocument是指流文档,一个流文档由一个或多个Block构成,所以它有一个Blocks属性。Block只是一个抽象基类,所以流文档的子元素其实是继承了Block的子类,例如:</Paragraph><!-- 有序列表:展示Block派生类 --><List MarkerOffset="25"               <!-- 编号缩进25单位 -->MarkerStyle="Decimal"           <!-- 使用数字编号 -->StartIndex="1">                 <!-- 起始编号为1 --><ListItem><Paragraph>BlockUIContainer(UI元素容器)</Paragraph>  <!-- 可嵌入按钮等控件 --></ListItem><ListItem><Paragraph>List(有序列表)</Paragraph>  <!-- 当前列表自身的类型 --></ListItem><ListItem><Paragraph>Paragraph(段落)</Paragraph>  <!-- 基础文本容器 --></ListItem><ListItem><Paragraph>Section(分组)</Paragraph>  <!-- 实现多列布局 --></ListItem><ListItem><Paragraph>Table(网格)</Paragraph>  <!-- 创建表格数据 --></ListItem></List></FlowDocument></RichTextBox><!-- 功能按钮:触发后台交互逻辑 --><Button x:Name="btn" Content="确定" Margin="10,5"          <!-- 边距设置:左右10单位,上下5单位 -->Click="btn_Click"/>     <!-- 事件绑定:需在后台实现处理方法 -->
</StackPanel>

    <Button x:Name="btn2" Content="网站" Width="100" Height="30" Margin="5" Click="btn2_Click"><Button.ToolTip><StackPanel><TextBlock Text="官方网站" FontWeight="Bold"/><TextBlock Text="点击这个按钮,进入WPF中文网站"/><Border BorderBrush="Silver" BorderThickness="0 1 0 0" Margin="0 4"/><TextBlock Text="http://www.wpfsoft.com" FontStyle="Italic"/></StackPanel></Button.ToolTip></Button>
<!-- 网站导航按钮:集成多层级工具提示 -->
<Button x:Name="btn2" Content="网站" Width="100"            <!-- 标准尺寸:适配主流导航栏布局 -->Height="30"Margin="5"            <!-- 边距:四边保留5单位间隔 -->Click="btn2_Click">   <!-- 事件绑定:需实现网页跳转逻辑 --><!-- 复合式工具提示:突破默认单行文本限制 --><Button.ToolTip><StackPanel><!-- 标题行:突出显示网站性质 --><TextBlock Text="官方网站" FontWeight="Bold"/>  <!-- 粗体强化重点 --><!-- 操作指引:说明按钮核心功能 --><TextBlock Text="点击这个按钮,进入WPF中文网站"/><!-- 分隔线:使用边框模拟水平分割线 --><Border BorderBrush="Silver" BorderThickness="0 1 0 0"  <!-- 仅显示上边框 -->Margin="0 4"/>             <!-- 上下增加4单位间距 --><!-- 网址展示:斜体弱化辅助信息 --><TextBlock Text="http://www.wpfsoft.com"  FontStyle="Italic"/>    <!-- 提示可复制性 --></StackPanel></Button.ToolTip>
</Button>

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

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

相关文章

JVM 有哪些垃圾回收器

垃圾收集算法 标记-复制算法(Copying): 将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。 标记-清除算法(Mark-Sweep): 算法分为“标记” 和“清除”两个…

React DndKit 实现类似slack 类别、频道拖动调整位置功能

一周调试终于实现了类 slack 类别、频道拖动调整位置功能。 历经四个版本迭代。 实现了类似slack 类别、频道拖动调整功能 从vue->react &#xff1b;更喜欢React的生态及编程风格&#xff0c;新项目用React来重构了。 1.zustand全局状态 2.DndKit 拖动 功能视频&…

新浪财经股票每天10点自动爬取

老规矩还是先分好三步&#xff0c;获取数据&#xff0c;解析数据&#xff0c;存储数据 因为股票是实时的&#xff0c;所以要加个cookie值&#xff0c;最好分线程或者爬取数据时等待爬取&#xff0c;不然会封ip 废话不多数&#xff0c;直接上代码 import matplotlib import r…

使用Android 原生LocationManager获取经纬度

一、常用方案 1、使用LocationManager GPS和网络定位 缺点&#xff1a;个别设备,室内或者地下停车场获取不到gps定位,故需要和网络定位相结合使用 2、使用Google Play服务 这种方案需要Android手机中有安装谷歌服务,然后导入谷歌的第三方库&#xff1a; 例如&#xff1a;i…

验证码实现

验证码案例 学了Spring MVC &#xff0c;配置 相关章节&#xff0c; 现可以尝试写一个前后端交互的验证码 文章目录 验证码案例前言一、验证码是什么&#xff1f;二、需求1.引入依赖2.导入前端页面3.约定前后段交互接口 三、代码解析Controllermodelapplication.xml 四丶结果五…

查询当前用户的购物车和清空购物车

业务需求&#xff1a; 在小程序用户端购物车页面能查到当前用户的所有菜品或者套餐 代码实现 controller层 GetMapping("/list")public Result<List<ShoppingCart>> list(){List<ShoppingCart> list shoppingCartService.shopShoppingCart();r…

(多看) CExercise_05_1函数_1.2计算base的exponent次幂

题目&#xff1a; 键盘录入两个整数&#xff1a;底(base)和幂指数(exponent)&#xff0c;计算base的exponent次幂&#xff0c;并打印输出对应的结果。&#xff08;注意底和幂指数都可能是负数&#xff09; 提示&#xff1a;求幂运算时&#xff0c;基础的思路就是先无脑把指数转…

【nacos安装指南】

Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载…

通过发音学英语单词:从音到形的学习方法

&#x1f4cc; 通过发音学英语单词&#xff1a;从音到形的学习方法 英语是一种 表音语言&#xff08;phonetic language&#xff09;&#xff0c;但不像拼音文字&#xff08;如汉语拼音、西班牙语等&#xff09;那么规则&#xff0c;而是 部分表音部分表意。这意味着我们可以通…

列表某个字段由多个值组成,使用id匹配展示

说明&#xff1a;列表中字段A的值由多个值组成&#xff0c;但是后端返回的是这多个值的id字符串&#xff0c;需要前端拿着多个id组成的字符串去另一个接口数据源匹配展示 列表后端返回多个字符串如下&#xff1a; sectorName: "1899292545382895618,1907311191514636289…

MQL5教程 05 指标开发实战:双色线、双线变色MACD、跨时间周期均线

文章目录 一、双色线指标二、双线变色MACD指标三、跨时间周期均线 一、双色线指标 这里的类型中&#xff0c;Color开头的&#xff0c;是可以选择多个颜色的。 #property indicator_chart_window #property indicator_buffers 18 #property indicator_plots 7 //--- plot xian…

Java全栈面试宝典:线程安全机制与Spring Boot核心原理深度解析

目录 一、Java线程安全核心原理 &#x1f525; 问题1&#xff1a;线程安全的三要素与解决方案 线程安全风险模型 线程安全三要素 synchronized解决方案 &#x1f525; 问题2&#xff1a;synchronized底层实现全解析 对象内存布局 Mark Word结构&#xff08;64位系统&…

【Cursor】设置语言

Ctrl Shift P 搜索 configure display language选择“中文-简体”

【新能源汽车整车动力学模型深度解析:面向MATLAB/Simulink仿真测试工程师的硬核指南】

1. 前言 作为MATLAB/Simulink仿真测试工程师,掌握新能源汽车整车动力学模型的构建方法和实现技巧至关重要。本文将提供一份6000+字的深度技术解析,涵盖从基础理论到Simulink实现的完整流程。内容经过算法优化设计,包含12个核心方程、6大模块实现和3种验证方法,满足SEO流量…

Java 线程池与 Kotlin 协程 高阶学习

以下是Java 线程池与 Kotlin 协程 高阶学习的对比指南&#xff0c;结合具体代码示例&#xff0c;展示两者在异步任务处理中的差异和 Kotlin 的简化优势&#xff1a; 分析&#xff1a; 首先&#xff0c;我们需要回忆Java中线程池的常见用法&#xff0c;比如通过ExecutorService创…

嵌入式EMC设计面试题及参考答案

目录 解释 EMC(电磁兼容性)的定义及其两个核心方面(EMI 和 EMS) 电磁兼容三要素及相互关系 为什么产品必须进行 EMC 设计?列举至少三个实际工程原因 分贝(dB)在 EMC 测试中的作用是什么?为何采用对数单位描述干扰强度? 传导干扰与辐射干扰的本质区别及典型频率范围…

实操(进程状态,R/S/D/T/t/X/Z)Linux

1 R 状态并不直接代表进程在运行&#xff0c;而是该进程在运行队列中进行排队&#xff0c;由操作系统在内存维护的队列 #include <stdio.h> #include <unistd.h>int main() {while(1){printf("我在运行吗\n");sleep(1);}return 0; }查看状态&#xff08…

React 文件上传新玩法:Aliyun OSS 加持的智能上传组件

文件上传是前端开发中的“老朋友”&#xff0c;但如何让它既简单又强大&#xff0c;还能无缝对接云端存储&#xff1f;今天&#xff0c;我要带你认识一个超酷的 React 组件 AliUploader&#xff0c;它不仅支持拖拽上传、批量编辑和文件排序&#xff0c;还直接把文件传到 Aliyun…

LabVIEW多线程

在 LabVIEW 中&#xff0c;多线程编程是提升程序执行效率的关键手段&#xff0c;尤其是在需要并行处理数据采集、控制执行和用户界面交互的场景下。LabVIEW 本身是基于数据流&#xff08;Dataflow&#xff09;的编程语言&#xff0c;天然支持多线程&#xff0c;但要高效利用多线…

图解AUTOSAR_SWS_LINStateManager

AUTOSAR LIN状态管理器(LinSM)详细设计 文档摘要 本文档提供了AUTOSAR LIN状态管理器(LinSM)模块的详细设计解析,包括架构、状态机、睡眠唤醒流程以及配置结构。通过图形化方式展现LinSM在AUTOSAR通信栈中的作用及其与其他模块的交互关系。 目录 AUTOSAR LIN状态管理器(Lin…