我的问题已在下面得到解答,但我刚刚意识到现在FontSize
仅在一个方向上调整大小。
是否有可能绑定两条路径?或另一种选择?
上一个问题
我有一个Grid
[20,20],其中包含TextBox
个es。在这些TextBoxe
中我放了数字。当应用程序启动时,它是全屏的。如果我调整窗口大小,Grid
的{{1}}也会调整大小。但TexBox
保持不变。所以我想在Window调整大小时更改Font
。我试过了:
FontSize
<{1>}代码之间的。但这不起作用。与属性 FontSize="{Binding ElementName=aTextBox, Path=Height}"
或TextBox
的{{1}}或Grid
绑定也无效。通过绑定到滑块,Window
会根据滑块的值进行更改。有没有人有一个很好的解决方案?
答案 0 :(得分:4)
Height
属性是TextBox
的初始高度。 ActualHeight
表示在屏幕上绘制的TextBox
的高度。所以你的绑定变成了:
<TextBox FontSize="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}, Converter={StaticResource HeightToFontSizeConverter}}" Text="12345" />
请注意,我使用了转换器,因为Height
与FontSize
的比率不是1:1且文字对于TextBox
来说太大了:
class HeightToFontSizeConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
var height = (double) value;
return .65 * height;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}
答案 1 :(得分:3)
一个简单的Viewbox可以解决这个问题,但也有问题。
请参阅此回复.. How to relative scale size of User Control?
我赞成转换器方法,如Julien的回复。
答案 2 :(得分:0)
我刚做了一个快速测试。如果我将Text
的{{1}}属性绑定到包含网格的TextBox
,则结果为Width
。这可能是你的绑定失败的原因。
如果我将NaN
的{{1}}属性绑定到FontSize
属性,则绑定正常,并且还会使用网格调整大小。虽然字体很大。你可能需要一些转换器来使TextBox
更小。
ActualWidth