【问题标题】:Control the width of child in Stackpanel在 Stackpanel 中控制子项的宽度
【发布时间】:2013-07-25 04:59:00
【问题描述】:

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

我有两个要垂直堆叠的元素(我需要它们彼此紧密跟随)。我目前正在尝试使用 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,我真的不知道绑定是如何工作的......

【问题讨论】:

    标签: wpf width element stackpanel


    【解决方案1】:

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

    更新>>>

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

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

    Grid's SharedSizeGroup and * sizing(发帖)

    Grid.IsSharedSizeScope Attached Property (MSDN)

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

    【讨论】:

    • 非常感谢,我会试试这个,我会告诉你的。
    • 好吧,其实我还有一个问题,如何将行的最大宽度设置为父网格的 4 列的宽度?我的问题是,如何引用父网格?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2019-07-21
    • 2014-06-03
    相关资源
    最近更新 更多