在c# Code WPF中为标签添加TextBlock

本文关键字:标签 添加 TextBlock Code WPF | 更新日期: 2023-09-27 18:09:49

在我的代码中,我创建了一个新的标签和格式化它,并使其成为堆叠面板的一个子。但是在标签的内部,我需要添加一个文本块,我有麻烦,找出如何做到这一点。

仅使用代码我需要由代码创建的WPF像这样工作:

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

但是我不知道如何在代码中获得标签内部的TextBlock,我认为会起作用的是不工作,因为它是一个标签:

 NewLabel.Children.Add(NewTextBlock);

但是当我用它来添加NewLabel到stackkedpanel时,这是有效的。

我需要这个工作的全部原因是因为我需要在标签中进行文本换行,但不能只使用TextBlock或其他控件。

在c# Code WPF中为标签添加TextBlock

只需将TextBlock设置为标签的内容就可以实现您的要求。

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

你也可以为你的资源添加一个"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" }