当前位置: 首页 > news >正文

【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&#xff08;Windows Presentation Foundation&#xff09;开发中&#xff0c;TextBlock控件是一个常用的元素&#xff0c;用于显示静态或动态文本内容。它提供了丰富的属性和事件&#xff0c;使得开发者能够灵活地控制文本的显示样式和响应用户的交互行为。本文将详细介绍…...

【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的网络聊天室 项目需求&#xff1a; 如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息如果有人下线&#xff0c;其他用户可以收到这个人的下线信息服务器可以发送系统信息 服务器端代码 #in…...

Excel双击单元格后弹窗输入日期

Step1. 在VBE界面新建一个窗体(Userform1),在窗体的工具箱的空白处右键,选中添加附件,勾选Calendar control 8.0,即可完成日历的添加。 PS:遗憾的是, Office 64 位没有官方的日期选择器控件。唯一的解决方案是使用Excel 的第三方日历。 参考链接:How to insert calen…...

原生 HTML/CSS/JS 实现右键菜单和二级菜单

文章来源&#xff1a;www.huhailong.vip 站点 文章源地址&#xff1a;https://www.huhailong.vip/article/1764653112011841538 Demo效果演示地址 先看效果图 {{{width“auto” height“auto”}}} 需要注意的就是边界检测处理&#xff0c;到极端点击底部和右侧时如果不做处理会…...

[项目前置]如何用webbench进行压力测试

测试软件 采用webbench进行服务器性能测试。 Webbench是知名的网站压力测试工具&#xff0c;它是由Lionbridge公司开发。 webbench的标准测试可以向我们展示服务器的两项内容&#xff1a; 每秒钟相应请求数 和 每秒钟传输数据量 webbench测试原理是&#xff0c;创建指定数…...

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《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安全数据摆渡系统 构建便捷的内外网数据交换通道

安全数据摆渡系统是一种设计用于解决内外网环境下&#xff0c;数据传输、管理、共享问题的安全系统&#xff0c;通过加密、访问控制等策略&#xff0c;提供安全可靠的数据传输和共享服务&#xff0c;尤其适用于对网络安全建设要求高的行业&#xff0c;比如研发型企业、党政机构…...

【云开发笔记No.14】持续交付、持续部署、持续交付流水线

一、持续交付 持续交付&#xff08;Continuous Delivery&#xff09;是一种软件开发方法论&#xff0c;它强调在开发过程中&#xff0c;软件可以在任何时间以最小的努力被部署到生产环境。其核心是确保代码更改在经过一系列自动化测试后&#xff0c;能够快速、安全地集成到主代…...

蓝桥杯练习07小兔子爬楼梯

小兔子爬楼梯 介绍 小兔子想去月球上旅行&#xff0c;假设小兔子拥有一个阶梯子&#xff0c;当你爬完层就可以到达月球&#xff0c;小兔子每次可以跳1或者2个台阶&#xff0c;小兔子有多少种跳法可以到达月球呢&#xff1f; 给定n是一个正整数&#xff0c;代表梯子的阶数&…...

Docker in Docker原理与实战

Docker in Docker (DinD) 是一种在Docker容器内部运行Docker的技术。它允许在一个Docker容器内部创建和管理其他的Docker容器&#xff0c;实现了一个容器内部的容器编排环境。本文将介绍Docker in Docker的原理&#xff0c;并给出一个实际的应用场景。 Docker in Docker的原理…...

Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)

图解&#xff1a; 前端设计&#xff1a; 前端设计一个link文字连接或者按钮&#xff08;ElementUI&#xff09;Element - The worlds most popular Vue UI framework 前端请求设计&#xff1a; import request from /utils/request //下载示例模型定义语言的JSON export const…...

【深度学习】Pytorch中实现交叉熵损失计算的方式总结

在PyTorch中&#xff0c;计算交叉熵损失主要有以下几种方式&#xff0c;它们针对不同的场景和需求有不同的实现方式和适用范围&#xff1a; 1. nn.CrossEntropyLoss 类 这是最常用且方便的方法&#xff0c;特别适用于多分类任务。nn.CrossEntropyLoss 实际上是同时完成了 sof…...

机器学习:处理jira工单的分类问题

如何根据jira工单的category、reporter自动找到处理它的组呢?这是一个利用机器学习中knn算法的小实践. 目录 Knn算法 数据 示例 分割数据 选择Neighbors knn的优缺点 机器学习是一种技术,它的目的是给机器学习能力,让它们可以根据数据自己做决定,所以对于训练…...

后端常问面经之操作系统

请简要描述线程与进程的关系,区别及优缺点&#xff1f; 本质区别&#xff1a;进程是操作系统资源分配的基本单位&#xff0c;而线程是任务调度和执行的基本单位 在开销方面&#xff1a;每个进程都有独立的代码和数据空间&#xff08;程序上下文&#xff09;&#xff0c;程序之…...

RK3568平台 iperf3测试网络性能

一.iperf3简介 iperf是一款开源的网络性能测试工具&#xff0c;主要用于测量TCP和UDP带宽性能。它可以在不同的操作系统上运行&#xff0c;包括Windows、Linux、macOS等。iperf具有简单易用、功能强大、高度可配置等特点&#xff0c;广泛应用于网络性能测试、网络故障诊断和网…...

Spring Boot中实现对特定URL的权限验证:拦截器、切面和安全框架的比较

引言&#xff1a; 在开发Web应用程序时&#xff0c;对特定URL进行权限验证是一项常见的需求。在Spring Boot中&#xff0c;我们有多种选择来实现这一目标&#xff0c;其中包括使用拦截器、切面和专门的安全框架&#xff08;如Spring Security&#xff09;。本文将比较这三种方式…...

【能源数据分析-00】能源领域数据集集锦(动态更新)

一、前言 大数据科学在能源领域的深度应用&#xff0c;已经深刻改变了这一行业的垂直格局。它为我们提供了宝贵的见解&#xff0c;帮助降低下游市场的成本&#xff0c;使石油生产商能够更好地应对市场繁荣期的需求。近期&#xff0c;石油价格的剧烈下跌给全球经济带来了沉重打…...

数据挖掘与机器学习 1. 绪论

于高山之巅&#xff0c;方见大河奔涌&#xff1b;于群峰之上&#xff0c;便觉长风浩荡 —— 24.3.24 一、数据挖掘和机器学习的定义 1.数据挖掘的狭义定义 背景&#xff1a;大数据时代——知识贫乏 数据挖掘的狭义定义&#xff1a; 数据挖掘就是从大量的、不完全的、有噪声的、…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...