1

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

我有两个要垂直堆叠的元素(我需要它们紧密地相互跟随)。我目前正在尝试使用 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 中使用 Grid.Column 和 Grid.ColumnSpan 时,它们似乎没有任何效果。

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

有谁能够帮助我 ?我确切地说我仍在学习 WPF,但我真的不知道绑定是如何工作的......

4

1 回答 1

1

在 WPF 中, aStackPanel不像Grid. 没有最大宽度……它会很乐意让内容从右侧消失。如果要自动调整大小,只需将StackPanels 替换为 `Grid

更新>>>

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

这些示例可以帮助您:

Grid 的 SharedSizeGroup 和 * 大小调整(SO 帖子)

Grid.IsSharedSizeScope 附加属性(MSDN)

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

于 2013-07-25T10:48:19.813 回答