[英]C# WPF - ComboBox to also be a TextBox, for example: just like in office where users can choose Font Size or enter it
[英]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.