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

如何以编程方式添加XAML中定义的Inline至FlowDocument?

当然可以实现!用XamlReader解析XAML字符串即可

你现在的问题是直接把XAML字符串传给Inlines.Add(),但这个方法需要的是实际的Inline类型对象,不是纯文本字符串。解决办法很简单——用XamlReader.Parse()把XAML字符串解析成对应的WPF元素,再添加到集合里就行。

具体步骤和代码示例:

首先确保你引用了System.Windows.Markup命名空间,然后修改你的代码如下:

XAML部分保持不变:

<FlowDocument>
    <Paragraph Name="Output"/>
</FlowDocument>

C#代码调整为:

using System.Windows.Markup;
using System.Windows.Documents;

// 创建要追加的Span容器
var appendTo = new Span();
// 定义要解析的XAML字符串
var xamlContent = "<Run>Something</Run>";

try
{
    // 把XAML字符串解析成Inline对象
    var parsedInline = (Inline)XamlReader.Parse(xamlContent);
    // 将解析后的元素添加到Span的Inlines集合
    appendTo.Inlines.Add(parsedInline);
    // 最后把Span添加到目标Paragraph中
    Output.Inlines.Add(appendTo);
}
catch (XamlParseException ex)
{
    // 处理XAML格式错误的情况,避免程序崩溃
    appendTo.Inlines.Add(new Run($"解析XAML失败:{ex.Message}"));
    Output.Inlines.Add(appendTo);
}

补充说明:

  • XamlReader.Parse()能把合法的XAML字符串转换成对应的WPF元素,这里我们强制转换为Inline类型,因为你的XAML定义的是Run(属于Inline的子类)。
  • 如果你的XAML是更复杂的Inline元素(比如<Bold>加粗内容</Bold>、<Italic>斜体内容</Italic>),同样可以用这个方法解析,只要根元素是Inline的派生类就行。
  • 一定要加异常处理,避免因为XAML格式写错导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:59:50