控制Stackpanel中子项的宽度

时间:2013-07-25 10:37:40

标签: wpf width element stackpanel

我正在尝试实现某种布局。

我有两个要垂直堆叠的元素(我需要它们紧密相互跟随)。我目前正在尝试使用Stackpanel来实现它。

问题在于我希望第一个元素具有有限的宽度,而另一个元素使用StackPanel中可用的所有宽度。理想情况下,我希望第一个元素的宽度等于包含StackPanel的网格中四列的宽度,这是我的代码。

<Grid>
<!-- Colums and Rows definition go here -->
<StackPanel  Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="8">
    //The first element
    <Viewbox Name="viewbox_choix" Margin="160,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="4">
    //The second element
    <StackPanel Grid.Column="0" Grid.ColumnSpan="5">
        <Border></Border>
        etc...
    </StackPanel>
</StackPanel>
</Grid>

网格属性指的是stackpanel的父网格。但是当我尝试在StackPanel中使用它们时,Grid.Column和Grid.ColumnSpans似乎没有任何效果。

该代码的问题是第一个元素也使用了StackPanel的所有宽度,但这不是我想要的......

任何人都可以帮助我吗?我确切地说我还在学习WPF,我真的不知道绑定是如何工作的......

1 个答案:

答案 0 :(得分:1)

在WPF中,StackPanel不像Grid那样有效。没有最大宽度......它会愉快地让内容从右侧消失。如果要自动调整大小,只需用{Grid

替换StackPanel

更新&gt;&gt;&gt;

Grid类中,有一个名为IsSharedSizeScope的附加属性。将其添加到父Grid并将其设置为true。然后在RowDefinitions中,您可以将SharedSizeGroup属性添加到您需要的列中。

这些示例可能会对您有所帮助:

Grid's SharedSizeGroup and * sizing(SO帖子)

Grid.IsSharedSizeScope Attached Property(MSDN)

您可能需要进行一些实验,但您应该能够使用这些属性获得所需的效果。