在C#代码WPF中向Text添加TextBlock

时间:2014-06-22 08:09:38

标签: c# wpf xaml

在我的代码中,我正在创建一个新的Label并将其格式化并使其成为Stacked Panel的子代。但是在Label内部我需要添加一个Text Block,我很难找到如何做到这一点。

仅使用代码我需要将代码创建的WPF工作如下:

<Label Background="#000000" Foreground="#FFFFFF">
    <TextBlock TextWrapping="Wrap" Text="Text Here"/>
</Label>

但我无法弄清楚如何在代码中的Label内部获取TextBlock,我认为可行的是因为它是Label:

 NewLabel.Children.Add(NewTextBlock);

但是当我使用它将NewLabel添加到StackedPanel时,这是有效的。

我需要这个工作的全部原因是因为我需要在Label中包装文本,但不能只使用TextBlock或其他Control。

2 个答案:

答案 0 :(得分:3)

只需将TextBlock设置为标签的内容即可达到您的要求。

Label lbl = new Label ();
TextBlock txtBlock = new TextBlock ();
txtBlock.TextWrapping = TextWrapping.Wrap;
lbl.Content = txtBlock;

答案 1 :(得分:1)

此外,您可以为您的资源添加“Label”样式,其中包含类型字符串的默认DataTemplate。因此,任何Label中的所有字符串内容都会被包装。

<Application.Resources>
    <Style TargetType="Label">
        <Style.Resources>
            <DataTemplate xmlns:sys="clr-namespace:System;assembly=mscorlib" DataType="{x:Type sys:String}">
                <TextBlock TextWrapping="Wrap" Text="{Binding}" />
            </DataTemplate>
        </Style.Resources>
    </Style>
</Application.Resources>

然后您需要做的就是设置字符串Content。

<Label Content="A very long string for my Label" />

var Label = new Label { Content = "A very long string for my Label" }