2011-04-01 86 views
0

我有一個TextBlock控制定義如下:WPF - TextBlock的問題

<TextBlock Width="250" 
      Height="23" 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" 
      Margin="20,16,0,0" 
      Name="RecipeName" 
      Text="{Binding Recipe.RecipeName}"/> 

代替硬編碼的250的寬度,我想將TextBlock來計算它需要顯示整個文本的寬度。我認爲有辦法做到這一點?

回答

5

如果未設置Width,通常應該自動適合內容。要獲得此自動寬度,請使用ActualWidth屬性。

明確地告訴控制,自動調整大小使用

Width="Auto" 

實際尺寸行爲也依賴於HorizontalAlignment屬性,如果它被設置爲Stretch控件將適合的內容,但對容器。

另請參閱MSDN


編輯:一些可視化:

<TextBlock Text="SetLeft"  Width="200" HorizontalAlignment="Left"  Background="Yellow"/> 
<TextBlock Text="SetCenter" Width="200" HorizontalAlignment="Center" Background="Yellow"/> 
<TextBlock Text="SetStretch" Width="200" HorizontalAlignment="Stretch" Background="Yellow"/> 
<TextBlock Text="AutoLeft" Width="Auto" HorizontalAlignment="Left"  Background="Yellow"/> 
<TextBlock Text="AutoCenter" Width="Auto" HorizontalAlignment="Center" Background="Yellow"/> 
<TextBlock Text="AutoStretch" Width="Auto" HorizontalAlignment="Stretch" Background="Yellow"/> 
<TextBlock Text="OmitLeft"     HorizontalAlignment="Left"  Background="Yellow"/> 
<TextBlock Text="OmitCenter"    HorizontalAlignment="Center" Background="Yellow"/> 
<TextBlock Text="OmitStretch"    HorizontalAlignment="Stretch" Background="Yellow"/> 

enter image description here

+0

@ H.B。 - 很好的總結,但需要提及父元素。例如,如果TextBlock位於具有固定寬度的Grid列中,則TextBlock仍可能出現剪切。 – CodeNaked 2011-04-01 19:08:48

+0

您的意思是說寬度可能會變得比最佳寬度小,因爲容器太小? – 2011-04-01 19:16:50

+0

@ H.B。 - 不,只有在使用拉伸時纔會發生。但是如果容器的寬度是50,則TextBlock所需的寬度是100,那麼TextBlock將被剪裁。 – CodeNaked 2011-04-01 19:26:34

2

如果您刪除寬度設置,那麼它的大小取決於它的父級。如果您發佈周圍的XAML,這將有助於確定大小調整行爲。