You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Avalonia聊天应用:如何在TextBox中正确显示表情符号?

WPF TextBox显示表情符号解决方案

针对你遇到的TextBox中表情显示为带黑边框的白色方块问题,可按以下步骤解决:

  • 使用支持表情的字体
    WPF默认字体可能不包含表情字符集,需指定支持彩色表情的字体,推荐使用系统自带的Segoe UI Emoji(Windows 10+内置),搭配 fallback 字体确保兼容性:

    <TextBox Classes="input" 
             Height="80" 
             VerticalContentAlignment="Top" 
             Padding="12 8 36 8" 
             TextWrapping="Wrap" 
             AcceptsReturn="True" 
             BorderBrush="Transparent" 
             Foreground="#040415" 
             CaretBrush="#0091AE" 
             Watermark="{x:Static resources:ResourcesStrings.SendMessage}"
             FontFamily="Segoe UI Emoji, Segoe UI Symbol, Arial"/>
    

    这样当Segoe UI Emoji不支持某表情时,会自动 fallback 到后续字体。

  • 启用彩色表情渲染
    确保WPF使用支持彩色表情的渲染模式,可在窗口或应用级别设置TextOptions.TextFormattingMode="Display",同时系统需为Windows 10及以上版本(该版本开始原生支持彩色表情渲染):

    <Window TextOptions.TextFormattingMode="Display">
        <!-- 你的控件内容 -->
    </Window>
    
  • 统一消息显示控件的字体设置
    发送消息后用于展示的控件(如TextBlock)也需设置相同的FontFamily,避免输入和显示不一致:

    <TextBlock FontFamily="Segoe UI Emoji, Segoe UI Symbol, Arial" Text="{Binding MessageContent}"/>
    
  • 兼容旧系统(可选)
    若需支持Windows 7等旧系统,可嵌入第三方开源表情字体(如Noto Color Emoji),注意遵守字体版权协议,嵌入方式如下:

    1. 将字体文件添加到项目,设置生成操作为资源
    2. 在XAML中引用:
      <FontFamily x:Key="NotoEmoji">pack://application:,,,/Fonts/#Noto Color Emoji</FontFamily>
      <!-- 控件中使用 -->
      <TextBox FontFamily="{StaticResource NotoEmoji}, Segoe UI Symbol, Arial"/>
      
  • 测试表情输入
    使用Windows自带表情面板(按下Win + .快捷键)输入表情,验证是否能正常显示,排除输入字符本身的问题。

内容的提问来源于stack exchange,提问作者Flictivity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:13:16