zoukankan      html  css  js  c++  java
  • 使用Grid做页面布局笔记

    没有使用wpf做过精细的页面布局,学习了一下。

    WPF中页面布局的控件很多,经过这段时间的学习发现:想要出特定的效果必须了解控件的使用布局和常用属性设置。

    首先我说明我想要的效果以及实现方法:

    效果如下图

    目标是实现拖拽中间的青色GridSplitter能够任意调整上下控件的面积。

    这里需要记录的几点:

    1、DockPanel 是用来规则的按顺序拜访控件的,目标是控件可以停靠在四角,最后一个控件可以Fill剩余的空间

    // Todo: 最近较忙 稍后补充……

    经过学习后发现很多种方法都可以,现在贴出我测试的一种(把绑定的后台代码删除就能看到效果,VS2015):

        <DockPanel Name="dockPanel1">
            <WrapPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch"
                       VerticalAlignment="Stretch" Background="Beige" DockPanel.Dock="Top" Height="40" Margin="2">
                <Button Command="{Binding CopyCmd}" Height="30" Content="复制" Margin="6" />
                <Label HorizontalContentAlignment="Left" VerticalContentAlignment="Center" HorizontalAlignment="Stretch"
                       VerticalAlignment="Stretch"
                       Background="Green" Margin="10" Width="200">
                    Message
                </Label>
            </WrapPanel>

            <Label Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch"
                   VerticalAlignment="Stretch" HorizontalContentAlignment="Left" VerticalContentAlignment="Center"
                   Background="Teal" DockPanel.Dock="Bottom" Margin="6">
                Status:
            </Label>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="50" />
                    <RowDefinition Height="5" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <DockPanel Grid.Row="0" HorizontalAlignment="Stretch"
                           VerticalAlignment="Stretch" Background="Beige" Margin="2">
                    <Label HorizontalContentAlignment="Left" VerticalContentAlignment="Center"
                           Background="HotPink" Margin="6">
                        Row1
                    </Label>
                </DockPanel>

                <GridSplitter Background="Aquamarine" Grid.Row="1" Grid.Column="0" Height="5" Grid.ColumnSpan="4"
                              HorizontalAlignment="Stretch"
                              VerticalAlignment="Center" ShowsPreview="True" />

                <Grid Grid.Row="2" HorizontalAlignment="Stretch"
                      VerticalAlignment="Stretch">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="50" />
                        <RowDefinition Height="5" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="50" />
                    </Grid.ColumnDefinitions>
                    <DockPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch"
                               VerticalAlignment="Stretch" Background="Beige" Margin="2">
                        <TextBox Text="{Binding model.WPF}" Margin="5"
                                 Background="DarkGoldenrod" HorizontalScrollBarVisibility="Disabled"
                                 VerticalScrollBarVisibility="Auto"
                                 VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch"
                                 VerticalAlignment="Stretch" TextWrapping="WrapWithOverflow" AcceptsReturn="True" />
                    </DockPanel>

                    <GridSplitter Background="Aquamarine" Grid.Row="1" Grid.Column="0" Height="5" Grid.ColumnSpan="4"
                                  HorizontalAlignment="Stretch"
                                  VerticalAlignment="center" ShowsPreview="True" />

                    <DockPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" HorizontalAlignment="Stretch"
                               VerticalAlignment="Stretch" Background="Beige" Margin="2">
                        <Button Command="{Binding CopyCmd}" Height="30" Content="复制" DockPanel.Dock="Top" Margin="5" />
                        <TextBlock Text="{Binding model.WPF}" TextWrapping="WrapWithOverflow"
                                   Background="DarkGoldenrod" Margin="6" />
                    </DockPanel>
                </Grid>
            </Grid>
        </DockPanel>

  • 相关阅读:
    list与map的区别
    [BJOI2019]光线——递推
    [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
    [BJOI2019]送别——非旋转treap
    [BJOI2019]排兵布阵——分组背包
    [LOJ3014][JOI 2019 Final]独特的城市——树的直径+长链剖分
    BZOJ2300[HAOI2011]防线修建——非旋转treap+凸包(平衡树动态维护凸包)
    BZOJ3033太鼓达人——哈密顿回路/欧拉回路
    BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块
    BZOJ2339[HNOI2011]卡农——递推+组合数
  • 原文地址:https://www.cnblogs.com/Ray898/p/5089160.html
Copyright © 2011-2022 走看看