2012-07-03 86 views
0

中的文本我想讓一個文本框被一個發光邊框包圍。將文本框縮放到

TextBox應該儘可能大,以便包含其中的所有文本。但沒有更大。然後邊框應該包圍文本。

我使用3x3網格使邊框居中在容器中間。只要文本足夠短,居中就可以正常工作。但是當你輸入一個很長的文本時,ViewBox實際上並不會縮小文本框的大小。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Viewbox Stretch="Uniform" Grid.Row="1" Grid.Column="1" > 
     <Border BorderBrush="#bab98b" BorderThickness="7" CornerRadius="15" VerticalAlignment="Center" HorizontalAlignment="Center" Background="Black"> 
      <TextBox Name="WaitMessage" Text="A Message" HorizontalAlignment="Center" Foreground="White" Background="Black" Padding="20" FontSize="60" Width="Auto"/> 
     </Border> 
    </Viewbox> 
</Grid> 

我認爲Viewbox應該縮放內容以適應根據父容器可用的尺寸。但是,如果我輸入的文本很長,它會在最後截斷。

簡而言之:我希望文字均勻縮小爲可用尺寸,但絕不會超出需要的範圍。

有人可以解釋我做錯了什麼嗎?

編輯:好的,如果我把10 *作爲中間列和行的寬度和高度,文本將始終停留在邊界內。 問題在於當ViewBox只是一個小文本時,ViewBox會使文本增長。 我認爲我不能使用maxHeight來達到這個目的,因爲我從來不希望它放大文本。

+0

您是否嘗試過TextBox包裝? – HichemSeeSharp

+0

它似乎沒有做任何事情。此外,它不能解釋爲什麼Viewbox不會縮小文本框IMO。 – Vanvid

+0

請重寫您的問題,並嘗試通過將您的實際代碼和您期望得到的內容加以簡化和理解 – HichemSeeSharp

回答

0

使用Viewbox.StretchDirection PropertyStretchDirection.DownOnly會做你想做的。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="10*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="10*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Viewbox Grid.Row="1" Grid.Column="1" 
      Stretch="Uniform" StretchDirection="DownOnly"> 
     <TextBox Text="A Message" FontSize="60" /> 
    </Viewbox> 
</Grid> 
+0

謝謝,那正是我需要的:) – Vanvid

+0

'FontSize'是關鍵 –

0

我不知道如何擴展,這將是你的代碼的其餘部分,但要獲得你可以做以下的控制中心的文字:

<Grid> 
     <Border BorderBrush="#bab98b" BorderThickness="7" CornerRadius="15" VerticalAlignment="Center" HorizontalAlignment="Center" Background="Black"> 
      <TextBox Name="WaitMessage" Text="A Message" HorizontalAlignment="Center" Foreground="White" Background="Black" Padding="20" FontSize="60" Width="Auto"/> 
     </Border> 
</Grid>