布局案例

1、标题栏、内容区、状态栏,用什么控件?

Stackpanel只能挤压,不能撑开区域

1、Grid可以替代

2、Dockpanel

默认最后一个沾满剩余空间

一般是先把确定的区域先写完

剩下的部分再处理

没必要按照顺序布局

    <DockPanel>
        <!-- 标题-->
        <Border Height="30" Background="Gray" DockPanel.Dock="Top"/>
        <!-- 状态-->
        <Border Height="30" Background="Gray" DockPanel.Dock="Bottom"/>
        <!-- 内容-->
        <Border Height="auto" Background="LightGray" />
    </DockPanel>

使用DockPanel,先划分:1、能从头到尾的,2、尺寸能定死的部分

 鼠标拖放改变尺寸的时候:向下,向右的时候可以实现自适应

 

中间部分是两行

            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition/>
            </Grid.RowDefinitions>

不设置高度,就是占满剩余空间

 

动态内容

建议使用UniformGrid,本身就是均分的

只需要设置两列,里面内容动态加载,两列一行,自动折行

没办法用Grid,否则必须指定哪个子项要指定加载到哪个单元格下

WarpPanel必须精确计算剩余的宽度必须正好够,否则就会折行,自动拖动也不满足条件

 

Tab页签

                <TabControl Background="AliceBlue" DockPanel.Dock="Bottom" Height="120">
                    <TabItem Header="浏览记录">
                        <DataGrid>
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="序号" Binding="{Binding Index}"/>
                                <DataGridTextColumn Header="网址" Binding="{Binding Url}"/>
                            </DataGrid.Columns>
                        </DataGrid>
                    </TabItem>
                </TabControl>

 

posted on 2025-03-28 16:19  张彦山  阅读(22)  评论(0)    收藏  举报