簡體   English   中英

嘗試使用C#和WPF調整文本框中的TextBox +字體大小,只能做到其中之一

[英]Trying to resize TextBox + font size in text box with C# and WPF, can only do one or the other

調整窗口大小時,我正在嘗試調整文本框和文本框內文本的大小。 我似乎能夠做一個或另一個,但不能一次完成。

調整文本框的大小是可行的,但是我無法調整其中的文本大小: 原始尺寸調整大小

上面示例的代碼:

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="133*"/>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="20*"/>
        </Grid.ColumnDefinitions>
        <Button Content="Button" Grid.Column="2"/>
        <Button Content="Button" Grid.Column="1"/>
        <TextBox TextWrapping="Wrap" VerticalContentAlignment="Center"/>
    </Grid>

或調整字體大小可以,但是我無法使文本框填充正在使用的視圖框: 原版的調整大小

上面示例的代碼:

    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="133*"/>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="20*"/>
        </Grid.ColumnDefinitions>
        <Button Content="Button" Grid.Column="2"/>
        <Button Content="Button" Grid.Column="1"/>
        <Viewbox Stretch="Uniform">
            <TextBox TextWrapping="Wrap" VerticalContentAlignment="Center"/>
        </Viewbox>
    </Grid>

使用Stretch =“ Fill”(在正確的軌道上,但是我寧願保持一致,而UniformToFill做了一些奇怪的事情,甚至都看不到發生了什么) 填

您可以使用轉換器。

public class FontSizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double actualHeight = System.Convert.ToDouble(value);
        int fontSize = (int)(actualHeight * .5);
        return fontSize;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

XAML:

....
<Window.Resources>
    <local:FontSizeConverter x:Key="fontSizeCon" />
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="9*" />
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>     
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="133*"/>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="20*"/>
        </Grid.ColumnDefinitions>
        <Button Content="Button" Grid.Column="2"/>
        <Button Content="Button" Grid.Column="1"/>
        <TextBox TextWrapping="Wrap" VerticalContentAlignment="Center"
                 FontSize="{Binding Path=ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}, Converter={StaticResource fontSizeCon}}"/>
    </Grid>      
</Grid>
...

結果:

在此處輸入圖片說明

在此處輸入圖片說明

這樣的事情適合嗎?

<Grid Grid.Row="1">
    <Grid.ColumnDefinitions>
            <ColumnDefinition Width="133*"/>
            <ColumnDefinition Width="20*"/>
            <ColumnDefinition Width="20*"/>
        </Grid.ColumnDefinitions>
        <Button Content="Button" Grid.Column="2"/>
        <Button Content="Button" Grid.Column="1"/>
        <Viewbox StretchDirection="Both" Stretch="Uniform">
            <TextBox Text="some text"></TextBox>
        </Viewbox>
    </Grid>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM