1

我在下面的问题得到了回答,但我刚刚意识到现在FontSize唯一的调整方向是一个方向。

是否有可能绑定两条路径?还是另一种选择?

上一个问题我有一个Grid[20,20]TextBox里面有 es。在这些TextBoxes 中,我输入了数字。当应用程序启动时,它是全屏的。Grid如果我用TexBoxes 调整窗口大小,也会调整大小。但Font保持不变。所以我想改变FontSize窗口调整大小的时间。我试过了:

 FontSize="{Binding ElementName=aTextBox, Path=Height}"

TextBox标签之间。但这不起作用。Grid与或Window与属性的绑定HeightWidth也不起作用。通过绑定到滑块,FontSize根据滑块的值进行更改。有没有人有一个很好的解决方案?

4

3 回答 3

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();
  }

}
于 2009-09-13T09:38:36.417 回答
3

一个简单的 Viewbox 可以解决问题,但存在一些问题。

参考这个回复..如何相对缩放用户控件的大小?

我赞成 Julien 的回复中的转换器方法。

于 2009-09-13T10:15:06.047 回答
0

我只是做了一个快速测试。如果我将Texta 的属性绑定TextBoxWidth包含网格的 the 结果是NaN. 这可能是您的绑定失败的原因。

如果我改为将 的属性绑定FontSizeTextBoxActualWidth属性,则绑定是可以的,并且还可以使用网格调整大小。不过字体很大。您可能需要一些转换器来使FontSize尺寸更小。

  <Grid x:Name="myGrid">
      <TextBox Text="Hello" FontSize="{Binding ElementName=myGrid, Path=ActualWidth}"/>
  </Grid>
于 2009-09-13T09:34:22.120 回答