0

我想制作一个带有发光边框的 TextBox。

TextBox 应该尽可能大,以便包含其中的所有文本。但没有更大。然后边框应该围绕文本。

我使用 3x3 Grid 使边框居中于容器的中间。只要文本足够短,居中就可以正常工作。但是当你输入一个很大的长文本时,ViewBox 并不会真正缩小 TextBox 的大小。

<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 会使文本增长,当它只是一个小文本时。我认为我不能为此目的使用 maxHeight ,因为我只是不想让它放大文本。

4

2 回答 2

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>
于 2012-07-03T14:02:42.917 回答
0

使用Viewbox.StretchDirection 属性StretchDirection.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>
于 2012-07-03T18:01:47.917 回答