【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.数据挖掘的狭义定义 背景:大数据时代——知识贫乏 数据挖掘的狭义定义: 数据挖掘就是从大量的、不完全的、有噪声的、…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...