2014-06-22 62 views
1

在我的代碼中,我創建了一個新標籤並對其進行了格式設置,並使其成爲堆疊面板的子項。但在標籤內部,我需要添加一個文本塊,並且我很難找出如何做到這一點。將TextBlock添加到C#代碼中的標籤WPF

使用代碼只有我需要的代碼創建的WPF像這樣的工作:

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

但我想不出如何獲取TextBlock的標籤內的代碼,我的想法將工作不工作,因爲它是一個標籤:

NewLabel.Children.Add(NewTextBlock); 

但是這作品時,我用它來NewLabel添加到StackedPanel。

我需要這個工作的全部原因是因爲我需要在Label中進行文本換行,但不能只使用TextBlock或其他控件。

回答

2

只需將TextBlock設置爲標籤的內容即可滿足您的要求。

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

此外,您還可以將「標籤」樣式添加到資源中,該資源包含用於字符串類型的默認DataTemplate。所以任何標籤中的所有字符串內容都被包裝。

<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。

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