详细解析 C# WPF 的 TextBox 和 TextBlock 控件

1. TextBlock 控件

核心定位
轻量级文本显示控件,用于呈现只读、格式化的文本内容,不支持用户编辑。

关键特性

  • 只读显示:用户无法直接编辑内容
  • 富文本支持:通过内联元素实现混合格式(粗体/斜体/超链接等)
  • 灵活换行TextWrapping 控制文本换行方式
  • ✂️ 截断处理TextTrimming 管理文本溢出时的省略方式
  • 高效渲染:性能优于 Label/TextBox,适合大量文本展示

核心属性

属性说明示例值
Text显示文本"Hello World"
TextWrapping换行方式Wrap, NoWrap
TextTrimming溢出省略方式CharacterEllipsis, WordEllipsis
TextAlignment文本对齐Left, Center, Right
Inlines内联元素集合混合文本格式
LineHeight行高20
Foreground文本颜色Red, #FF0000

使用示例

<!-- 基础文本显示 -->
  <TextBlock Text="用户协议内容" Margin="5"/>
  <!-- 多行文本 -->
      <TextBlock Text="长文本自动换行..."
      TextWrapping="Wrap"
      Width="200"/>
    <!-- 富文本(混合格式) -->
      <TextBlock>
        <Run Text="重要提示:" FontWeight="Bold"/>
        <LineBreak/>
          <Hyperlink NavigateUri="https://example.com">
          点击查看详情
        </Hyperlink>
      </TextBlock>
      <!-- 数据绑定 -->
        <TextBlock Text="{Binding CurrentTime, StringFormat='当前时间: {0:HH:mm}'}"/>

2. TextBox 控件

核心定位
用户输入控件,提供可编辑文本区域,支持基础文本编辑功能。

关键特性

  • ✏️ 文本编辑:支持输入/修改/删除文本
  • 滚动支持:内置垂直/水平滚动条
  • 撤销栈Undo()/Redo() 方法支持
  • 只读模式:通过 IsReadOnly 切换
  • ⚙️ 输入限制MaxLength 控制最大字符数
  • 拼写检查:内置拼写检查功能

核心属性

属性说明示例值
Text编辑内容双向绑定数据
AcceptsReturn允许多行输入True/False
TextWrapping多行换行方式Wrap
VerticalScrollBarVisibility垂直滚动条Auto, Visible
MaxLength最大字符数100
IsReadOnly只读模式True
SpellCheck.IsEnabled拼写检查True

使用示例

<!-- 单行输入框 -->
    <TextBox Text="{Binding UserName}"
    Width="200"
    MaxLength="50"/>
  <!-- 多行文本框 -->
      <TextBox AcceptsReturn="True"
      TextWrapping="Wrap"
      VerticalScrollBarVisibility="Auto"
      Height="100"
      SpellCheck.IsEnabled="True"/>
    <!-- 密码输入框(实际使用PasswordBox) -->
      <PasswordBox PasswordChar="*" />
      <!-- 带水印提示 -->
        <TextBox>
          <TextBox.Style>
              <Style TargetType="TextBox">
              <Setter Property="Foreground" Value="Gray"/>
              <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                  <Setter Property="Foreground" Value="Black"/>
                </Trigger>
              </Style.Triggers>
            </Style>
          </TextBox.Style>
        <TextBox.Text>请输入内容...</TextBox.Text>
        </TextBox>

TextBlock 与 TextBox 核心区别

特性TextBlockTextBox
编辑能力❌ 只读✅ 可编辑
主要用途静态文本展示用户输入区域
文本格式✅ 富文本(混合格式/超链接)❌ 仅纯文本
性能⚡ 轻量高效⚖️ 相对较重
滚动条❌ 需配合ScrollViewer✅ 内置滚动支持
多行支持✅ 自动换行✅ 需设置AcceptsReturn=True
数据绑定方向单向(OneWay)双向(TwoWay)
交互功能有限(如超链接)完整(选择/复制/粘贴/撤销)
典型场景标签/说明/标题表单输入/文本编辑区

使用场景指南

  1. 选择 TextBlock 当

    • 需要显示静态文本(如标签、说明)
    • 要求富文本格式(混合字体/超链接)
    • 性能敏感区域(如列表项中的文本)
    • 不需要用户修改内容
  2. 选择 TextBox 当

    • 需要用户输入数据(用户名/备注等)
    • 实现多行文本编辑(如评论框)
    • 需要文本编辑功能(复制/粘贴/撤销)
    • 绑定可修改的数据源

特殊提示

  • 密码输入使用专用 PasswordBox 控件(不显示明文)
  • 复杂富文本编辑需使用 RichTextBox
  • 大量文本展示建议 TextBlock + ScrollViewer 组合

通过合理选用这两个控件,可显著提升WPF应用的交互体验和性能表现。

posted on 2025-09-27 20:56  lxjshuju  阅读(89)  评论(0)    收藏  举报