繁体   English   中英

WPF 容器/网格布局

[英]WPF Container/grid layout

我需要创建一个 WPF 容器,该容器可以显示 3 种不同控件类型的集合。 每个控件的高度和宽度都基于其他控件。 例如,如果 controlA 为 200X200,则 controlB 为 100X200,controlC 为 50X50。 我需要找出如何通过根据可用空间和每种控件类型的数量找到最佳布局来创建一个足够智能的容器来排列这些控件。

以下面的例子为例,我们有 1 个 controlA 实例、1 个 controlB 实例和 2 个 controlC 实例。 请注意这个优雅的定位是如何使其外观紧凑,而不是顺序控件列表。

容器 http://onlinegolfpool.com/images/grid.png

关于如何解决的任何想法? 我应该使用网格并自行计算吗?

提前致谢

您绝对应该使用 Grid,但不要想着自己计算它 :) 使用星号 (*) 来定义每个单元格的相对大小。 WPF 将为您完成剩下的工作。

例子:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Rectangle Fill="Pink" Stroke="Black" Grid.RowSpan="2"/>
    <Rectangle Fill="Blue" Stroke="Black" Grid.Column="1" Grid.ColumnSpan="2"/>
    <Rectangle Fill="Yellow" Stroke="Black" Grid.Row="1" Grid.Column="1"/>
    <Rectangle Fill="Yellow" Stroke="Black" Grid.Row="1" Grid.Column="2"/>
</Grid>

Asterisk 非常强大,很多人甚至不知道它:) 享受吧!

我的建议是使用堆栈面板而不是网格面板。 然后为您想要的任何控件提供硬编码宽度,其余区域将自行调整。

<StackPanel Orientation=Horizontal>
    <leftcontrol/>
    <StackPanel Orientation=Vertical>
        <firstcontrol/>
        <StackPanel Orientation=Horizontal>
            <bottomLeftControl/>
            <bottomRightControl/>
        </StackPanel> 
    </StackPanel>
</StackPanel>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM