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

C#中如何访问TextBlock.Inlines里图片后的文本内容?

如何访问TextBlock中图片后的文本内容?

在WPF中,向TextBlock.Inlines添加元素时,不同内容会被自动转换成对应的Inline子类:

  • 添加Image时,它会被包装成InlineUIContainer(因为Image是UIElement,不属于文本类Inline)
  • 添加字符串时,会自动创建为Run对象(文本类Inline的核心载体)

要获取图片后的文本,可通过以下两种方式实现:

方法一:遍历Inline集合(通用场景)

如果后续可能添加多个文本块,或不确定元素顺序是否固定,遍历集合筛选内容更可靠:

string targetText = string.Empty;
bool hasPassedImage = false;

foreach (var inline in tbHeader.Inlines)
{
    // 识别图片对应的InlineUIContainer
    if (inline is InlineUIContainer container && container.Child is Image)
    {
        hasPassedImage = true;
        continue;
    }

    // 收集图片之后所有Run的文本
    if (hasPassedImage && inline is Run run)
    {
        targetText += run.Text;
    }
}

// targetText即为图片后的所有文本内容

方法二:直接定位元素(固定顺序场景)

如果你的添加逻辑固定(先图片再文本,且只有一段文本),可以直接通过索引获取对应的Run元素:

// 先确保集合元素数量足够,且第二个元素是Run
if (tbHeader.Inlines.Count >= 2 && tbHeader.Inlines[1] is Run textRun)
{
    string targetText = textRun.Text;
}

补充说明

  • 如果需要处理更复杂的Inline结构(比如包含Bold、Italic等格式化元素),可以递归遍历这些元素的Inlines集合,提取其中的Run文本。
  • 访问前务必做类型判断,避免出现类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:22:05