2013-03-19 40 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