WPF Dockpanel won';不要向右对齐

WPF Dockpanel won';不要向右对齐,wpf,dockpanel,Wpf,Dockpanel,我在Button.Content上使用DockPanel的代码。但是,它不允许我右对齐最后一个图像(小箭头) 它现在给了我这样的信息: 所以右边的小箭头应该放在按钮的右边,而不仅仅是文本块之后。 我发现了一些类似的问题,看起来我做得很正确,但不知怎么的,它不是 我这里做错了什么?尝试将按钮的水平内容对齐设置为“拉伸””。否则,DockPanel将使用其内容所需的大小,然后向左对齐。您可以通过为TextBlocks尝试设置使用不同的文本长度来确认此行为 HorizontalContentAl

我在Button.Content上使用DockPanel的代码。但是,它不允许我右对齐最后一个图像(小箭头)


它现在给了我这样的信息:

所以右边的小箭头应该放在按钮的右边,而不仅仅是文本块之后。 我发现了一些类似的问题,看起来我做得很正确,但不知怎么的,它不是


我这里做错了什么?

尝试将按钮的
水平内容对齐设置为“
拉伸”
”。否则,DockPanel将使用其内容所需的大小,然后向左对齐。您可以通过为
TextBlock
s

尝试设置使用不同的文本长度来确认此行为

HorizontalContentAlignment=“拉伸”


在按钮上。

您只需在DockPanel(比如一个空画布)上附加一个子项,而不使用DockPanel.Dock属性,以便将所有剩余空间分配给它。
通常,DockPanel只有在其最后一个子级没有Dock约束时才能正常工作

使HorizontalContentAlignment对齐。虽然这样做有效,但对我来说,它更像是一种黑客行为。添加额外的UI元素,只是为了获得所需的布局。我觉得这不对。不过我还是投了赞成票,因为它解决了这个问题,并且显示了内在的XAML行为。@Mikedklerk:是的,我一开始也觉得很奇怪,但是如果你认为额外的画布是未使用的(因此仍然可用)的占位符的话DockPanel中的room听起来好一点。如果父元素没有
HorizontalContentAlignment
property,这也是解决方案添加额外UI元素有一个简单的替代方法:将DockPanel LastChildFill属性设置为False
<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>