我希望我的 LOB 表单中的标签和文本框的字体大小随着窗口大小或分辨率的变化而增大和缩小。为了实现这一点,我将标签和文本框放在了 View 框中。
标签和自定义单选按钮的行为与我预期的一样,但文本框不会水平拉伸(stretch)以填充 View 框(抱歉,由于代表无法发布图像)。如果您输入文本框,它们将水平填充 View 框。
这是我正在使用的代码示例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.186*"/>
<ColumnDefinition Width="0.814*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.127*"/>
<RowDefinition Height="0.873*"/>
</Grid.RowDefinitions>
<Viewbox Margin="0,0,0.917,0">
<Label Content="First name:"/>
</Viewbox>
<Viewbox Grid.Column="1">
<TextBox TextWrapping="Wrap"/>
</Viewbox>
</Grid>
我尝试在 View 框中放置网格、堆栈面板和停靠面板(LastChildFill="True"),然后将文本框放置在这些布局控件中,但这也不起作用。反正有没有让文本框水平填充父 View 框?
这个问题与此类似:WPF TextBox won't fill in StackPanel但这个问题是堆栈面板,而不是 View 框。
最佳答案
只需使用转换器
像这样设置字体大小:FontSize="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight ,Converter={StaticResource heightconverter}, ConverterParameter=3}"
public class ProcentualHeightConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter is string p)
{
if (value is double v)
{
var result = double.TryParse(p, out double param);
if (result)
{
return v / param;
}
}
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
关于wpf - 文本框不会拉伸(stretch)以填充 View 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726256/