2014-06-22 3 views
1

내 코드에서 새 Label을 만들고 서식을 지정하여 Stacked Panel의 자식으로 만듭니다. 그러나 Label 내부에 Text Block을 추가해야하며이를 수행하는 방법을 찾는 데 어려움을 겪고 있습니다. 코드를 사용하여C# 코드의 Label에 TextBlock 추가 WPF

는이 같은 일을 코드에 의해 생성 된 WPF에 필요

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

을하지만 코드에서 레이블의 내부에 그 TextBlock을 활용하는 방법을 알아낼 수 없습니다, 나는 무엇을 생각

NewLabel.Children.Add(NewTextBlock); 

하지만이 StackedPanel에 NewLabel를 추가하는 데 사용할 때 작동 : 그것은 레이블이기 때문에 작동하지 않습니다 작동합니다.

레이블이 텍스트 배치가 필요하지만 TextBlock 또는 다른 컨트롤을 사용할 수 없기 때문에이 기능이 필요한 모든 이유가 있습니다.

답변

2

귀하의 요구 사항을 충족시키기 위해 레이블의 내용으로 TextBlock을 설정하면됩니다.

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

또한 "문자열"에 대한 기본 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> 

그런 다음 문자열 콘텐츠를 설정하기 만하면됩니다.

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

또는

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