0

輝く境界線で囲まれたTextBoxを作成したいと思います。

TextBoxは、すべてのテキストを含めるために必要な大きさにする必要があります。しかし、それ以上ではありません。そして、境界線はテキストを囲む必要があります。

3x3グリッドを使用して、境界線をコンテナの中央の中央に配置します。テキストが十分に短い限り、センタリングは正常に機能します。ただし、大きな長いテキストを入力すると、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>

ビューボックスは、親コンテナに応じて利用可能なサイズに収まるようにコンテンツを拡大縮小することになっていると思いました。しかし、非常に長いテキストを入力すると、最後にクリップされてしまいます。

つまり、テキストを利用可能なサイズに均一に縮小したいのですが、必要以上に大きくならないようにします。

誰かが私が間違っていることを説明できますか?

編集:わかりました。中央の列と行の幅と高さとして10 *を入力すると、テキストは常に境界線の内側に留まります。問題は、小さなテキストの場合、ViewBoxによってテキストが大きくなることです。maxHeightをこの目的に使用することはできないと思います。テキストを拡大したくないからです。

4

2 に答える 2

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 に答える
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 に答える