WPF:如何在按钮上居中和缩放角色?

时间:2011-07-22 07:31:05

标签: c# wpf xaml

对于我正在研究的项目,我想创建一个屏幕键盘。所以我喜欢把一个角色放在一个按钮上。但这样做的问题是我无法设置完整尺寸的角色并以按钮为中心。不知何故,在这种情况下,它似乎在角色的上方和下方都有一些空间。

我目前用于按钮的代码是:

<Button Grid.RowSpan="2" HorizontalAlignment="Left" VerticalAlignment="Top" Width="40" Height="40" VerticalContentAlignment="Center">
        <Button.Background>
            <SolidColorBrush Color="Gray" Opacity="0.3" />
        </Button.Background>

        <Button.Content>
            <Viewbox>
                <TextBlock FontSize="40" FontFamily="Monotype Corsiva" Foreground="Red" Text="i" LineHeight="20px" LineStackingStrategy="BlockLineHeight" />
            </Viewbox>
        </Button.Content>
    </Button>

目前的结果是这个;

Click

有人知道如何以完整尺寸显示角色并以按钮为中心吗?

2 个答案:

答案 0 :(得分:1)

这将使用按钮自动调整文本大小。

<Viewbox>
    <TextBlock Margin="-2,0,0,0"
               Padding="0"
               FontFamily="Monotype Corsiva"
               Foreground="Red"
               Text="i"
               LineStackingStrategy="BlockLineHeight" />
</Viewbox>

我认为由于您使用的字体,该字符看起来偏离中心。我通过将边距的左值设置为负值来调整位置(即:Margin="-2,0,0,0")。

答案 1 :(得分:0)

在这种情况下,你必须在一个按钮中添加一个画布以及一个画布,并使用负边距将其设置为中心,但是你想要它。

<Button Width="30" Height="30">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Canvas Grid.Row="0" Grid.Column="0">
            <TextBlock Canvas.Bottom="-22" Canvas.Right="-10" FontSize="35">h</TextBlock>
        </Canvas>                
    </Grid>
</Button>

enter image description here