如何将字体大小绑定到变量网格大小

Sam*_*uel 4 wpf grid font-size

我有一个2列2行的网格.单个字符(Unicode U + 2699)放在右下角的网格字段中.它看起来像这样:

网格目前

我希望角色自动调整其字体大小以适应它所放置的网格区域(在这种情况下,它应该绑定到第二个网格行的高度,但因为在某些情况下,可能不清楚是否网格的高度或宽度较小,知道如何绑定到这两个值中的最低值也是很好的.

到目前为止,我的实现类似于以下内容(我为此示例简化了一下):

<Grid>
   <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition x:Name="heightToBind" Height="40"/>
   </Grid.RowDefinitions>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="14*" />
      <ColumnDefinition Width="*" />
   </Grid.ColumnDefinitions>

   <Button FontSize="{Binding ElementName=heightToBind, Path=Height.Value, Mode=OneWay}" Content="&#x2699;" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

这里的问题是,它仅在高度是 RowDefinitions内的固定值时才有效.我希望它能够使用以下定义:

<Grid.RowDefinitions>
   <RowDefinition Height="4*"/>
   <RowDefinition x:Name="heightToBind" Height="*"/>
</Grid.RowDefinitions>
Run Code Online (Sandbox Code Playgroud)

作为一个额外的问题我也会感兴趣为什么角色可能太低而在底部被切断(我尝试VerticalAlignment="Center"按钮但没有效果).

Bla*_*hma 5

您可以尝试使用a ViewBox作为按钮的内容:

<Button Grid.Row="1" Grid.Column="1">
    <Button.Content>
        <Viewbox  StretchDirection="Both" HorizontalAlignment="Stretch">
            <TextBlock Text="&#x2699;" />
        </Viewbox>
    </Button.Content>
</Button>
Run Code Online (Sandbox Code Playgroud)

一个视框可以拉伸和缩放自己的孩子,以填补所有可用空间...