为什么我的StackPanel背景颜色不能充满整个宽度?

3
我有一个带有背景画刷的StackPanel,其中包含一个单独的按钮。它包含在一个比按钮更宽的网格中。
令人沮丧的是,背景只有按钮那么宽。我可以在按钮的边距周围看到它。因此,我最终在我的按钮旁边有一条默认灰色的宽条,其边框是我的背景颜色。
<StackPanel Visibility="Visible" HorizontalAlignment="Right" Background="{StaticResource qtyBg}">
    <Button x:Name="bttnQtyEditKeys" Content="EDIT KEYPAD" Visibility="Visible" Click="bttnQtyEditKeys_Click"/>
</StackPanel>

我通过在其外围包装一个边框,并设置该边框的背景画刷来修复了它。
这是一个hack,所以它让我很烦。有没有其他方法使StackPanel的背景不那么奇怪?

我不认为在这里使用边框是一种hack。 - Berryl
我认为是这样的,因为我不希望该组件实际上有边框。 - Grant Birchmeier
1个回答

4
问题不在于你的背景,而是你的StackPanel。你的背景没有问题,但是你的StackPanel没有填充可用空间。
您需要在StackPanel上设置HorizontalAlignment和VerticalAlignment为Stretch。
以下代码可以解决问题:
<Grid>
    <StackPanel Visibility="Visible" HorizontalAlignment="Stretch" Background="blue">
        <Button x:Name="bttnQtyEditKeys" HorizontalAlignment="Right" Content="EDIT KEYPAD" Visibility="Visible" Click="bttnQtyEditKeys_Click"/>
    </StackPanel>
</Grid>

不好,因为它把我的按钮放在左边。我想要它在右边。 - Grant Birchmeier
似乎没有任何效果。它仍然在左边。 - Grant Birchmeier
@GrantBirchmeier:我已经编辑了我的答案。这段代码对我来说运行良好。如果它对你不起作用,那么肯定有其他问题,你没有告诉我们。 - Matt Burland
嗯,可能是我不知道的现有样式在起作用。我需要在一个“干净”的项目上试一试。谢谢。 - Grant Birchmeier
看来你是对的。在一个“干净”的项目中,它确实可以正常工作。谢谢。 - Grant Birchmeier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接