【问题标题】:Code equivalent of XAML snippetXAML 片段的等效代码
【发布时间】:2010-12-16 19:06:21
【问题描述】:

我想知道TextBlock中的部分的等效代码:

<TextBlock>
     Hello
     <Run Background="Red">S</Run>
     <Run Background="Blue">O</Run>
</TextBlock>

原因是我有一个返回TextBox 内容的转换器,但我不确定从转换器返回什么类型。我尝试了一些集合类型,其中包含字符串和 2 个 Run 实例,但这不起作用。

我还注意到以下内容不起作用:

<TextBlock>
    <TextBlock.Text> <--- Added this
        Hello
        <Run Background="Red">S</Run>
        <Run Background="Blue">O</Run>
    </TextBlock.Text>
</TextBlock>

所以我的第二个问题是我必须将转换器结果绑定到哪个属性?

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    首先,您可以通过 InLines 属性添加 Run 块,例如

    TextBlock txtBlock = new TextBlock();
    
    txtBlock.Inlines.Add(new Run { Text = "S", Background = Brushes.Red });
    txtBlock.Inlines.Add(new Run { Text = "O", Background = Brushes.Blue });
    

    其次,您不能通过“TextBlock.Text”添加,因为这需要一个字符串,而不是 Runs 的集合。

    【讨论】:

    • 谢谢!所以我需要为我的转换器进行多重绑定,我在其中传递文本块和文本。然后我在转换器中使用您的代码将运行添加到 textblock.Inlines
    【解决方案2】:

    试试这个:

        <Label>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Hello"/>
                <TextBlock Background="Red" Text="S"/>
                <TextBlock Background="Blue" Text="O"/>
            </StackPanel>
        </Label>
    

    将你的转换器添加到每个文本块的绑定中。我认为它比使用运行更灵活

    【讨论】:

    • 感谢 biju。我已经考虑过了,但它不适用于我,因为我需要很多文本块
    • 那你应该试试itemscontrol
    猜你喜欢
    • 2017-12-18
    • 2021-11-06
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2017-10-26
    • 2012-10-06
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多