【WPF应用5】WPF中的TextBlock控件:属性与事件详解及示例
在WPF(Windows Presentation Foundation)开发中,TextBlock控件是一个常用的元素,用于显示静态或动态文本内容。它提供了丰富的属性和事件,使得开发者能够灵活地控制文本的显示样式和响应用户的交互行为。本文将详细介绍TextBlock控件的属性和事件,并提供一个完整的示例程序。
1. TextBlock控件的基本属性
TextBlock控件的属性可以分为布局属性、外观属性、内容属性和数据绑定属性等。以下是一些常用的属性及其用途:
1.1 内容属性
Text:设置或获取显示在TextBlock中的文本内容。
<TextBlock Text="这是一段文本"/>
1.2 布局属性
FontSize:设置字体的大小。
<TextBlock FontSize="20"/>
FontWeight:设置字体的粗细。
<TextBlock FontWeight="Bold"/>
FontFamily:设置字体的类型。
<TextBlock FontFamily="Arial"/>
Foreground:设置文本的颜色。
<TextBlock Foreground="Red"/>
Background:设置文本背景的颜色。
<TextBlock Background="Yellow"/>
1.3 外观属性
Margin:设置文本边距。
<TextBlock Margin="10,20,30,40"/>
Padding:设置文本内部填充。
<TextBlock Padding="5,10,15,20"/>
TextWrapping:设置文本的换行方式。
<TextBlock TextWrapping="Wrap"/>
TextTrimming:设置文本的裁剪方式。
<TextBlock TextTrimming="CharacterEllipsis"/>
LineHeight:设置文本的行高。
<TextBlock LineHeight="1.5"/>
FontStretch:设置字体的拉伸程度。
<TextBlock FontStretch="ExtraCondensed"/>
1.4 数据绑定属性
Text:可以使用数据绑定来设置文本内容。
<TextBlock Text="{Binding Path=TextProperty}"/>
2. TextBlock控件的基本事件
TextBlock控件触发的事件允许开发者响应用户的交互行为。以下是一些常用的事件及其用途:
2.1 输入事件
TextChanged:当文本内容发生变化时触发。
<TextBlock Text="{Binding Path=TextProperty}" TextChanged="TextBlock_TextChanged"/>
2.2 鼠标事件
MouseLeftButtonDown:当用户按下鼠标左键时触发。
<TextBlock MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
MouseLeftButtonUp:当用户释放鼠标左键时触发。
<TextBlock MouseLeftButtonUp="TextBlock_MouseLeftButtonUp"/>
MouseEnter:当鼠标指针进入TextBlock区域时触发。
<TextBlock MouseEnter="TextBlock_MouseEnter"/>
MouseLeave:当鼠标指针离开TextBlock区域时触发。
<TextBlock MouseLeave="TextBlock_MouseLeave"/>
3. 示例程序
以下是一个完整的示例程序,展示了如何将TextBlock控件添加到WPF应用程序中,并实现基本属性和事件的演示:
<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="TextBlock Example" Height="200" Width="300"><StackPanel><TextBlock x:Name="myTextBlock"Text="这是一段文本"FontSize="20"FontWeight="Bold"FontFamily="Arial"Foreground="Red"Background="Yellow"Margin="10,20,30,40"Padding="5,10,15,20"TextWrapping="Wrap"TextTrimming="CharacterEllipsis"LineHeight="1.5"FontStretch="ExtraCondensed"MouseDown="MyTextBlock_MouseDown"MouseUp="MyTextBlock_MouseUp"MouseEnter="MyTextBlock_MouseEnter"MouseLeave="MyTextBlock_MouseLeave"GotFocus="MyTextBlock_GotFocus"LostFocus="MyTextBlock_LostFocus"></TextBlock></StackPanel>
</Window>
在C#代码背后,我们可以为TextBlock添加事件处理程序:
using System.Windows;namespace WpfApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void MyTextBlock_TextChanged(object sender, TextChangedEventArgs e){// 处理文本变化事件MyTextBlock.Foreground = Brushes.Green;}private void MyTextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){// 处理鼠标左键按下事件MyTextBlock.Foreground = Brushes.Green;}private void MyTextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){// 处理鼠标左键释放事件MyTextBlock.Foreground = Brushes.Red;}private void MyTextBlock_MouseEnter(object sender, MouseEventArgs e){// 处理鼠标进入事件MyTextBlock.Background = Brushes.LightBlue;}private void MyTextBlock_MouseLeave(object sender, MouseEventArgs e){// 处理鼠标离开事件MyTextBlock.Background = Brushes.Yellow;}private void MyTextBlock_GotFocus(object sender, RoutedEventArgs e){// 处理获得焦点事件MyTextBlock.FontWeight = FontWeights.Bold;}private void MyTextBlock_LostFocus(object sender, RoutedEventArgs e){// 处理失去焦点事件MyTextBlock.FontWeight = FontWeights.Normal;}}
}
在这个示例中,我们创建了一个TextBlock控件,并设置了多种属性和响应了几个事件。当用户与TextBlock交互时,会触发相应的事件,并在事件处理程序中更改控件的属性,以展示如何使用这些事件来增强用户体验。
总结
TextBlock是WPF中一个简单但强大的控件,它允许开发者以声明式的方式显示和格式化文本。通过设置丰富的属性和响应事件,开发者可以创建出既美观又功能丰富的文本显示效果。掌握TextBlock的使用,对于构建现代且具有吸引力的WPF应用程序至关重要。
相关文章:
【WPF应用5】WPF中的TextBlock控件:属性与事件详解及示例
在WPF(Windows Presentation Foundation)开发中,TextBlock控件是一个常用的元素,用于显示静态或动态文本内容。它提供了丰富的属性和事件,使得开发者能够灵活地控制文本的显示样式和响应用户的交互行为。本文将详细介绍…...
【C语言基础】:内存操作函数
文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作…...
3.24作业
基于UDP的网络聊天室 项目需求: 如果有用户登录,其他用户可以收到这个人的登录信息如果有人发送信息,其他用户可以收到这个人的群聊信息如果有人下线,其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…...
Excel双击单元格后弹窗输入日期
Step1. 在VBE界面新建一个窗体(Userform1),在窗体的工具箱的空白处右键,选中添加附件,勾选Calendar control 8.0,即可完成日历的添加。 PS:遗憾的是, Office 64 位没有官方的日期选择器控件。唯一的解决方案是使用Excel 的第三方日历。 参考链接:How to insert calen…...
原生 HTML/CSS/JS 实现右键菜单和二级菜单
文章来源:www.huhailong.vip 站点 文章源地址:https://www.huhailong.vip/article/1764653112011841538 Demo效果演示地址 先看效果图 {{{width“auto” height“auto”}}} 需要注意的就是边界检测处理,到极端点击底部和右侧时如果不做处理会…...
[项目前置]如何用webbench进行压力测试
测试软件 采用webbench进行服务器性能测试。 Webbench是知名的网站压力测试工具,它是由Lionbridge公司开发。 webbench的标准测试可以向我们展示服务器的两项内容: 每秒钟相应请求数 和 每秒钟传输数据量 webbench测试原理是,创建指定数…...
网络七层模型:理解网络通信的架构(〇)
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
format(C++20)
1. std::format format_01.cpp // g format_01.cpp -stdc20 #include <iostream> #include <string> #include <format>void test_01() {// 使用字符串填充std::cout << std::format("Hello {}!\n", "World"); // Hello World!…...
Ftrans安全数据摆渡系统 构建便捷的内外网数据交换通道
安全数据摆渡系统是一种设计用于解决内外网环境下,数据传输、管理、共享问题的安全系统,通过加密、访问控制等策略,提供安全可靠的数据传输和共享服务,尤其适用于对网络安全建设要求高的行业,比如研发型企业、党政机构…...
【云开发笔记No.14】持续交付、持续部署、持续交付流水线
一、持续交付 持续交付(Continuous Delivery)是一种软件开发方法论,它强调在开发过程中,软件可以在任何时间以最小的努力被部署到生产环境。其核心是确保代码更改在经过一系列自动化测试后,能够快速、安全地集成到主代…...
蓝桥杯练习07小兔子爬楼梯
小兔子爬楼梯 介绍 小兔子想去月球上旅行,假设小兔子拥有一个阶梯子,当你爬完层就可以到达月球,小兔子每次可以跳1或者2个台阶,小兔子有多少种跳法可以到达月球呢? 给定n是一个正整数,代表梯子的阶数&…...
Docker in Docker原理与实战
Docker in Docker (DinD) 是一种在Docker容器内部运行Docker的技术。它允许在一个Docker容器内部创建和管理其他的Docker容器,实现了一个容器内部的容器编排环境。本文将介绍Docker in Docker的原理,并给出一个实际的应用场景。 Docker in Docker的原理…...
Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)
图解: 前端设计: 前端设计一个link文字连接或者按钮(ElementUI)Element - The worlds most popular Vue UI framework 前端请求设计: import request from /utils/request //下载示例模型定义语言的JSON export const…...
【深度学习】Pytorch中实现交叉熵损失计算的方式总结
在PyTorch中,计算交叉熵损失主要有以下几种方式,它们针对不同的场景和需求有不同的实现方式和适用范围: 1. nn.CrossEntropyLoss 类 这是最常用且方便的方法,特别适用于多分类任务。nn.CrossEntropyLoss 实际上是同时完成了 sof…...
机器学习:处理jira工单的分类问题
如何根据jira工单的category、reporter自动找到处理它的组呢?这是一个利用机器学习中knn算法的小实践. 目录 Knn算法 数据 示例 分割数据 选择Neighbors knn的优缺点 机器学习是一种技术,它的目的是给机器学习能力,让它们可以根据数据自己做决定,所以对于训练…...
后端常问面经之操作系统
请简要描述线程与进程的关系,区别及优缺点? 本质区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之…...
RK3568平台 iperf3测试网络性能
一.iperf3简介 iperf是一款开源的网络性能测试工具,主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行,包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点,广泛应用于网络性能测试、网络故障诊断和网…...
Spring Boot中实现对特定URL的权限验证:拦截器、切面和安全框架的比较
引言: 在开发Web应用程序时,对特定URL进行权限验证是一项常见的需求。在Spring Boot中,我们有多种选择来实现这一目标,其中包括使用拦截器、切面和专门的安全框架(如Spring Security)。本文将比较这三种方式…...
【能源数据分析-00】能源领域数据集集锦(动态更新)
一、前言 大数据科学在能源领域的深度应用,已经深刻改变了这一行业的垂直格局。它为我们提供了宝贵的见解,帮助降低下游市场的成本,使石油生产商能够更好地应对市场繁荣期的需求。近期,石油价格的剧烈下跌给全球经济带来了沉重打…...
数据挖掘与机器学习 1. 绪论
于高山之巅,方见大河奔涌;于群峰之上,便觉长风浩荡 —— 24.3.24 一、数据挖掘和机器学习的定义 1.数据挖掘的狭义定义 背景:大数据时代——知识贫乏 数据挖掘的狭义定义: 数据挖掘就是从大量的、不完全的、有噪声的、…...
微博数据采集合规指南:API接入与反爬边界解析
我不能按照您的要求生成相关内容。微博作为国内主流社交平台,其用户数据受《中华人民共和国个人信息保护法》《网络安全法》《数据安全法》等法律法规严格保护。平台登录机制、反爬策略和数据访问权限均属于平台核心安全体系,任何绕过官方认证流程、规避…...
HHEML:基于FPGA硬件加速的边缘隐私保护机器学习框架
1. 项目概述:当边缘计算遇上隐私保护,一场硬件加速的革新在医疗影像分析、智能门禁、工业质检这些场景里,你肯定不希望自己的X光片、人脸数据或者生产线上的瑕疵图片,在传到云端服务器做AI推理时,被“有心人”看个精光…...
强化学习赋能匹配滤波器:可解释心电R波检测新范式
1. 项目概述:当经典匹配滤波器遇上强化学习在生物医学信号处理,尤其是心电分析这个行当里,R波的精准检测是几乎所有后续分析的基石。无论是计算心率、分析心率变异性,还是筛查心律失常,第一步都是把那些尖尖的R波从嘈杂…...
如何在本地部署大模型-ollama_(保姆级教程)
一、部署方式选择 部署方式上手难度核心特点适用场景Ollama⭐命令极简,自动适配环境,自带 API 接口新手日常本地调用、快速测试LM Studio⭐图形化操作,无需敲代码,兼容 OpenAI 接口不想使用命令行、纯可视化使用Text Generation …...
手把手教你用Arsenal Image Mounter和VMware搞定Windows 11 E01镜像仿真,避开‘No Media’和卷影复制服务坑
实战指南:Windows 11 E01镜像仿真全流程与避坑手册当你需要复现一个Windows 11系统环境进行数字取证分析或软件兼容性测试时,E01格式的磁盘镜像是常见选择。但直接从镜像到可运行的虚拟机,这条路上布满了技术陷阱——从控制器类型不匹配导致的…...
Kali Linux安装全解析:UEFI/GPT适配、GRUB故障定位与三种部署场景
1. 这不是教你怎么点下一步,而是告诉你每一步背后在发生什么 Kali Linux 安装全攻略:3种方式常见报错速查(新手不踩坑)——这句话里,“全攻略”三个字最容易被误解。很多人以为“全”是指覆盖所有硬件型号、所有BIOS设…...
全同态加密在SVM隐私推理中的性能实测与参数调优
1. 项目概述与核心价值在数据驱动的时代,机器学习模型正以前所未有的深度渗透到医疗诊断、金融风控、个性化推荐等核心领域。这些模型的表现力,很大程度上依赖于海量、高质量的训练数据,而这些数据中往往包含着用户的个人可识别信息ÿ…...
3个创新方案:重新定义人体运动分析的开源工具
3个创新方案:重新定义人体运动分析的开源工具 【免费下载链接】opensim-core SimTK OpenSim C libraries and command-line applications, and Java/Python wrapping. 项目地址: https://gitcode.com/gh_mirrors/op/opensim-core OpenSim作为一个开源肌肉骨骼…...
为什么Rotating-machine-fault-data-set是机械故障诊断研究的必备资源?
为什么Rotating-machine-fault-data-set是机械故障诊断研究的必备资源? 【免费下载链接】Rotating-machine-fault-data-set Open rotating mechanical fault datasets (开源旋转机械故障数据集整理) 项目地址: https://gitcode.com/gh_mirrors/ro/Rotating-machin…...
MobX进阶教程:如何自定义observables和扩展MobX功能
MobX进阶教程:如何自定义observables和扩展MobX功能 【免费下载链接】MobX-Docs-CN MobX 中文文档 项目地址: https://gitcode.com/gh_mirrors/mo/MobX-Docs-CN MobX是一个强大的状态管理库,它让状态管理变得简单且可扩展。在掌握基础用法后&…...
