2012-06-05 120 views
2
  1. 的底部我想文本錨定到該按鈕的最底部,無論圖像寬高比的。
  2. 我想讓圖片拉伸以適應按鈕中的剩餘空間。

這xaml確實有圖像填充剩餘空間,但文本正好放在圖像下,而不是在按鈕的最底部。也許我需要使用DockPanel以外的東西,但我不確定要使用什麼。如果有不同的方式可行,則文本不需要放在標籤中。文本WPF圖像按鈕錨定在按鈕

感謝

<Button Height="150" Width="150"> 
    <DockPanel LastChildFill="True"> 
     <Label HorizontalContentAlignment="Center" DockPanel.Dock="Bottom">foo</Label> 
     <Image Source="bar.png" /> 
    </DockPanel> 
</Button> 

回答

3

按鈕元素並不會自動允許它的內容來填充整個按鈕區。爲此,您必須將Horizo​​ntalContentAlignment和VerticalContentAlignment屬性都設置爲「拉伸」。

<Button Height="150" Width="150" 
     HorizontalContentAlignment="Stretch" 
     VerticalContentAlignment="Stretch"> 
    <DockPanel LastChildFill="True"> 
     <Label HorizontalContentAlignment="Center" DockPanel.Dock="Bottom">foo</Label> 
     <Image Source="bar.png" /> 
    </DockPanel> 
</Button> 
+0

Magnus Johansson's「 Height =」{Binding RelativeSource = {RelativeSource FindAncestor,AncestorType = ButtonBase,AncestorLevel = 1},Path = Height}答案也適用。 – Joel

1

只是做了一個快速實驗

或許這可以幫助?

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="64*" /> 
     <RowDefinition Height="30" /> 
    </Grid.RowDefinitions> 
     <Image Source="bar.png" Stretch="UniformToFill" Grid.Row="0" /> 
     <Label DockPanel.Dock="Bottom" Content="Foo" HorizontalAlignment="Center" Grid.Row="1" x:Name="Label1" VerticalAlignment="Bottom" ></Label> 
</Grid> 

如果嘗試調整行高度。

+0

這剪輯我的圖像。我的圖像實際上比按鈕大,圖像拉伸實際上正在縮小它們。對不起,我的問題沒有說明這一點。 – Joel

2

你最有可能需要告訴DockPanel擴大到其Height父容器:

<Button x:Name="button" Height="150" Width="150"> 
    <DockPanel LastChildFill="True" Height="{Binding Height, ElementName=button}"> 
    <Image DockPanel.Dock="Top" Source="bar.png" /> 
    <Label DockPanel.Dock="Bottom" HorizontalContentAlignment="Center" 
      VerticalAlignment="Bottom">foo</Label> 
    </DockPanel> 
</Button> 
+0

此答案適用。對不起,我不能將兩個答案標記爲正確的。此外,如果任何人有興趣使用這個沒有命名按鈕的答案,您可以使用RelativeSource綁定: – Joel