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

XAML TextBlock报错:无法共存文本与LineBreak及Text属性重复设置

解决TextBlock的XAML解析错误问题

错误原因分析

  1. 第一个错误「无法在属性元素中同时包含文本‘line1’和子元素‘LineBreak’」:
    TextBlock的直接子元素要求是Inline类型(如Run、LineBreak),直接写文本会被隐式转为Run,但混合文本节点和LineBreak元素会导致XAML解析器无法正确处理内容模型,从而报错。

  2. 第二个错误「Text属性被多次设置」:
    你在显式使用<TextBlock.Text>属性元素的同时,还在其中混入了LineBreak元素(而Text属性仅支持字符串值),加上解析器对混合内容的误判,导致被认为重复设置了Text属性。

解决方案

方案1:使用Inline元素构建内容(推荐,支持更丰富的文本格式)

将文本用Run元素包裹,和LineBreak一起作为TextBlock的直接子元素,符合XAML内容模型要求:

<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" Margin="15">
    <Run Text="line1"/>
    <LineBreak/>
    <LineBreak/>
    <Run Text="line2"/>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding State}" Value="ShowText">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

方案2:直接设置Text属性(仅适用于纯文本换行)

如果不需要复杂的文本格式,可以直接在Text属性中使用XML换行符&#10;实现换行,避免使用LineBreak元素:

<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" Margin="15">
    <TextBlock.Text>line1&#10;&#10;line2</TextBlock.Text>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Visibility" Value="Hidden"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding State}" Value="ShowText">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:17:38