我有一个包含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="⚙" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" />
</Grid>
这里的问题是,只有在RowDefinitions中高度为固定值时才有效。我希望它能够使用以下定义:
<Grid.RowDefinitions>
<RowDefinition Height="4*"/>
<RowDefinition x:Name="heightToBind" Height="*"/>
</Grid.RowDefinitions>
作为一个额外的问题,我也有兴趣为什么角色可能太低而在底部被切断(我试了VerticalAlignment="Center"
按钮但没有效果)。
答案 0 :(得分:5)
您可以尝试使用ViewBox
作为按钮的内容:
<Button Grid.Row="1" Grid.Column="1">
<Button.Content>
<Viewbox StretchDirection="Both" HorizontalAlignment="Stretch">
<TextBlock Text="⚙" />
</Viewbox>
</Button.Content>
</Button>
ViewBox可伸展和伸展他的孩子以填补所有可用空间......
答案 1 :(得分:1)
您可以尝试绑定ActualHeight
而不是Height
:
<Button FontSize="{Binding ElementName=heightToBind, Path=ActualHeight.Value, Mode=OneWay}"
Content="⚙" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" />
这应该有用。
网格定义上的*
表示将可用空间作为高度,因此仅在为布局准备页面布局时确定。如果未设置或更改高度,则在ActualHeight
属性中返回实际高度。