2013-03-19 41 views
4

我有這個代碼,我在Button.Content上使用DockPanel。但它不會讓我對齊最後一個圖像(小箭頭)。WPF Dockpanel不會正確對齊

<Button Height="70" 
        HorizontalContentAlignment="Left"> 
       <Button.Content> 
       <DockPanel LastChildFill="False"> 
        <Image DockPanel.Dock="Left" 
        Height="50" 
         Width="50" 
         Source="{StaticResource Placeholder}" 
         Stretch="UniformToFill" 
         Margin="5" /> 
        <TextBlock DockPanel.Dock="Left" 
          Text="Dummy text" 
          VerticalAlignment="Center" 
          Margin="5" /> 
        <Image DockPanel.Dock="Right" 
         Height="24" 
         Width="24" 
         Source="{StaticResource Right_Arrow_24}" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Right" 
         Stretch="UniformToFill" 
         Margin="5" /> 
       </DockPanel> 
       </Button.Content> 
      </Button> 

現在給了我這樣的:

​​

所以正確的小箭頭應放置在按鈕的權利,而不是僅僅將TextBlock後。 我發現了一些類似的問題,它看起來像我做的是正確的,但不知何故它不是..

我在做什麼錯在這裏?

+0

使Horizo​​ntalContentAlignment伸展 – dowhilefor 2013-03-19 15:01:44

回答

6

嘗試將按鈕的HorizontalContentAlignment設置爲「Stretch」。否則,您的DockPanel將使用其內容所需的大小,然後左對齊。您可以通過使用不同的文本長度爲確認此行爲您TextBlock小號

+0

Ahh該死的......太簡單了,太笨了:) Thx! – PitAttack76 2013-03-19 15:35:47

1

嘗試設置

Horizo​​ntalContentAlignment = 「拉伸」

在您的按鈕。

4

您只需將一個額外的子元素添加到DockPanel(比如一個空Canvas)而不需要DockPanel.Dock屬性,以便爲其分配所有剩餘空間。 一般來說,只有當DockPanel的最後一個孩子沒有Dock限制時,DockPanel才能正常工作。

+0

儘管這起作用,但它似乎更像是對我的破解。添加一個額外的UI元素,只是爲了獲得你想要的佈局。這不適合我。然而我投票贊成,因爲它解決了這個問題,並顯示了內在的XAML行爲。 – 2017-08-07 07:03:54