c# - 无法拉伸(stretch)内部 StackPanel

标签 c# xaml alignment panel

使用下面的设置,我可以将窗口的整个宽度着色为紫色。内部堆栈面板为黄绿色并移至左侧。

<StackPanel HorizontalAlignment="Stretch"
            Orientation="Horizontal"
            Background="BlueViolet"
            Height="70">
  <StackPanel HorizontalAlignment="Left"
              Orientation="Horizontal"
              Background="Chartreuse" >

我原以为如果我将内部堆栈面板的水平对齐方式更改为拉伸(stretch),它也会填充所有宽度,但这种情况并没有发生。我尝试过右对齐和拉伸(stretch)对齐,似乎它不会影响内部控件的宽度。

根据帖子,我发现实现它的方法(并且它当然适用于外部控制)。我可以缺少什么吗?我已经删除了外部面板中声明的其他控件(即黄绿色控件的所有兄弟控件),没有任何区别。

最佳答案

StackPanel 将为其内容提供所需的空间,但也仅提供所需的空间。

如果你想完全填充窗口的宽度,只需将外部的StackPanel替换为Grid

如果您希望 StackPanel 至少填满整个面板,可以将 MinWidth 绑定(bind)到其父级 ActualWidth:

<StackPanel HorizontalAlignment="Stretch"
    Name="parent"
    Orientation="Horizontal"
    Background="BlueViolet"
    Height="70">

    <StackPanel HorizontalAlignment="Stretch"
        MinWidth="{Binding Path=ActualWidth, ElementName=parent}"
        Orientation="Horizontal"
        Background="Chartreuse" >
    </StackPanel>
</StackPanel>

关于c# - 无法拉伸(stretch)内部 StackPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005675/

相关文章:

c# - C# 中的 StreamReader 和缓冲区

c# - 使用 EntityDataSource 和 WHERE 过滤数据

c# - 为什么这段代码在编译正常时会引发 'does not exist in namespace' 错误?

css - 对齐 HTML5 表单元素

c++ - C 中的显式强制转换

c# - 为什么c#中没有Number的基类型?

xaml - 如何让 TextBlock 右对齐?

c# - 如何在 XAML Canvas 中绘制随机/不规则线?

html - 如何在列div的中心水平对齐 `button-group`?

c# - asp.net 网站项目设置存储在哪里?