在 WPF(Windows Presentation Foundation)中,TextBlockTextBox 是两个常用于显示文本的控件,但它们的用途、功能和适用场景有很大的区别。下面是它们的详细对比:


一、基本定义

TextBlock

  • 命名空间System.Windows.Controls
  • 用途:主要用于显示只读文本内容
  • 特点:支持富文本格式(如字体、颜色、超链接等)。
  • 继承自FrameworkElement

TextBox

  • 命名空间System.Windows.Controls
  • 用途:用于输入和编辑文本
  • 特点:用户可以编辑内容,支持多行文本、滚动条、文本选择等。
  • 继承自Control

二、功能对比

特性 TextBlock TextBox
是否可编辑 ❌ 不可编辑 ✅ 可编辑
支持富文本 ✅ 支持(通过 Inlines ⚠️ 有限支持(需要使用 RichTextBox
显示静态文本 ✅ 推荐 ❌ 不推荐
用户交互 ❌ 无输入交互 ✅ 支持键盘输入、选择、剪贴板等
性能 ✅ 更轻量,性能更好 ⚠️ 更重,资源消耗更多
数据绑定 ✅ 支持绑定(只读) ✅ 支持双向绑定(可编辑)

三、代码示例

TextBlock 示例:

1
2
3
4
<TextBlock Text="这是一个只读的文本"
Foreground="Blue"
FontSize="16"
Margin="10"/>

你也可以使用 Inlines 实现富文本效果:

1
2
3
<TextBlock Margin="10">
这是<Run Foreground="Red">红色</Run>文字和<Run FontSize="20">大号</Run>文字。
</TextBlock>

TextBox 示例:

1
2
3
4
<TextBox Text="可编辑的文本"
Width="200"
Height="30"
Margin="10"/>

多行文本:

1
2
3
4
5
6
7
<TextBox Text="这是第一行
这是第二行"
AcceptsReturn="True"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
Width="200"
Height="100"/>

四、适用场景

场景 推荐控件
显示静态说明文字 TextBlock
显示富文本内容(如帮助文档) TextBlockRichTextBox
用户输入信息(如用户名、密码) TextBox
需要绑定用户输入的字段 TextBox(支持双向绑定)
简单展示信息,不需要交互 TextBlock

五、小提示

  • 如果你只是展示信息,不要使用 TextBox,因为:

    • 它会带来不必要的编辑功能。
    • 占用更多资源。
    • 用户可能会误操作。
  • 如果你需要显示富文本格式,优先考虑 TextBlock

  • 如果你需要用户输入并保存数据,则使用 TextBox,并配合数据绑定使用。


六、总结

对比项 TextBlock TextBox
主要用途 显示文本 编辑文本
是否可编辑 ❌ 否 ✅ 是
是否支持富文本 ✅ 是 ❌(需用 RichTextBox
用户交互 ❌ 无 ✅ 有
性能 ⚡ 快 ⚠️ 慢一些
推荐场景 显示静态信息 输入框、编辑器