在我的代码中,我正在创建一个新的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。
答案 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" }