2011-07-22 50 views
2

對於我正在處理的項目,我想創建一個屏幕鍵盤。所以我喜歡在一個按鈕上放置一個角色。但是,這樣做的問題是我無法設置完整的字符大小,並集中在按鈕上。不知何故,在這種情況下,我似乎不希望在角色上面和下面留出一些空間。WPF:如何居中和縮放按鈕上的字符?

我目前使用了按鈕的代碼是這樣的:

<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

是否有人知道如何表現人物在全尺寸和居中按鈕?

回答

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")。

+0

我希望有一個更簡單的解決方案(如字體獨立解決方案),但是這有助於我! – Oildragon

+0

@Oragragon:樂於幫忙。 –

0

在這種情況下,除了網格之外,您還必須在按鈕中添加一個Canvas,並使用負邊距使其居中,但不管您希望如何。

<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

+0

感謝您的快速響應,但它仍然不完美。它現在居中,但沒有填充按鈕!字符周圍還有很多空間 – Oildragon

+0

我不太明白,難道你不能只是讓字體變大嗎? – KMC

+0

不,它不會使字體更大,嘗試此更clearity: <網格ShowGridLines = 「真」> <電網。 ColumnDefinitions> <邊框了borderThickness = 「2」 BorderBrush = 「LightBlue」> ħ Oildragon