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
相关产品推荐
相关产品推荐

