WPF布局

1 篇文章 0 订阅

1、WPF的UI布局:

    【1】布局的原则:

    1、如果做屏幕适应的程序,不要显示的设置元素(控件)的尺寸,一般可以设置最小和最大尺寸。

    2、不应使用屏幕坐标指定元素位置,元素的位置应该由它所在的容器决定。

    3、布局容器可以嵌套。

     【2】 布局的容器

        1、Grid面板

        2、StackPanel面板

        3、Canvas面板

        4、DockPanel面板

        5、WrapPanel面板


二、Grid面板(可以想象成Table)

     1、布局特点

      [1]、可以定义任意数量的行、列,并且轻松跨行、跨列。

      [2]、行、列高度或者宽度可以设置绝对值、相对比例、自动调整等方式。

    2、使用场合:

         [1]、UI的大布局设计。

         [2]、UI需要整体尺寸改变时。

      GridDemo:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="25*"/>
            <RowDefinition Height="160*"/>
            <RowDefinition Height="25*"/>
        </Grid.RowDefinitions>
        <!--<Grid></Grid>-->
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="110*"></ColumnDefinition>
            <ColumnDefinition Width="148*"></ColumnDefinition>
            <ColumnDefinition Width="65*"></ColumnDefinition>
            <ColumnDefinition Width="65*"></ColumnDefinition>


        </Grid.ColumnDefinitions>
        <Label x:Name="Label" Content="请输入您的留言:" Height="25" Margin="5,1" Grid.Column="0" Grid.Row="0" />
        <ComboBox x:Name="Cbbly" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="3"  Margin="3" />
        <TextBox x:Name="Txtly" Grid.ColumnSpan="4" Grid.Row="1" Grid.Column="0" Margin="5"/>
        <Button x:Name="BtnSubmit" Content="提交" Grid.Column="2"  Grid.Row="2" Width="55" Height="25"/>
        <Button x:Name="BtnCancel" Content="取消" Grid.Column="3" Grid.Row="2" Width="55" Height="25"/>

    </Grid>




三、StackPanel面板

   1、布局特点:

   【1】 可以把内部元素在纵向或者横向上紧凑排列,形成栈式布局,通俗来说就是把元素堆到一块。

   【2】 当把前面的元素去掉后,后面的会整体向前移动,占领原有元素空间。

  2、适用场合

    【1】、同类型原型需要紧凑排列(比如制作菜单或者列表)

    【2】、移除其中的元素后能够自动补缺的布局,或者动画。

 3、三个属性:

     【1】、Orientation 属性:决定内部元素是横向还是纵向积累。

     【2】、HorizontalAlignment 属性:决定内部元素水平方向上的对齐方式。

     【3】、VerticalAlignment 属性:决定内部元素垂直方向上的对齐方式。

StackPanelDemo: <多个布局标签嵌套>

<Grid>
        <GroupBox Header="请选择你喜欢的课程名称" BorderBrush="Black" Margin="8">
            <StackPanel Margin="5">
                <CheckBox Content="A.C#面向对象编程"></CheckBox>


                <CheckBox Content="B.WCF通信框架" />


                <CheckBox Content="C.WPF快速编程"></CheckBox>
                <CheckBox Content="D.ASP.NET MVC"></CheckBox>
                
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                   
                    <Button Name="BtnSubmit" Content="提  交" Width="70" Margin="7" Click="BtnSubmit_Click" />
                    <Button Name="BtnReset" Content="重  置" Width="70"  Margin="7" Click="BtnReset_Click"/>
                </StackPanel>
            </StackPanel>
        </GroupBox>
    </Grid>



四、Canvas面板:

   【1】布局特点:

    1、在面板内部,我们可以通过x和y的坐标属性,直接控制控件的位置,非常类似winform中的top和left定位。

    2、我们可以直接通过拖放的形式选择控件的位置。

   【2】适用场合

    1、一经设计基本上不会有改动的小布局(系统登录或者密码修改等)

    2、需要使用绝对定位的布局。

    3、依赖于横纵坐标的动画。

CanvasDemo:

   <Grid>
        <Canvas Margin="10" >
            <Label x:Name="Lable" Content="用户名 :" Canvas.Left="26" Canvas.Top="30" />
            <TextBox x:Name="TxtUserName" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" Height="25" Canvas.Left="85" Canvas.Top="30"  Width="150"/>
            <Label x:Name="Label" Content="密  码 :"  Canvas.Left="26" Canvas.Top="65"/>
            <PasswordBox x:Name="TxtUserPassWord" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" Height="25" Canvas.Left="85" Canvas.Top="65" Width="150"/>
            <Button x:Name="BtnLogin" Content="登  录" Canvas.Left="70" Canvas.Top="115" Width="75"/>
            <Button x:Name="BtnCancel" Content="取  消" Canvas.Left="160" Canvas.Top="115" Width="75"/>
        </Canvas>

    </Grid>




五、DockPanel面板:

   1、布局特点

    根据Dock属性值,元素向指定方向累积,切分DockPanel内部剩余空间,就像传播停靠一样。

  2、使用场景

    需要自动填满剩余空间的布局。(最后一个元素自动填满DockPanel内的剩余空间。)

DockPanelDemo:

 <Grid>
        <DockPanel>
            <TextBox DockPanel.Dock="Top"  Height="30" BorderBrush="#FFEA0F0F"  />
            <TreeView DockPanel.Dock="Left" Width="100" BorderBrush="Goldenrod"></TreeView>
            <ListView DockPanel.Dock="Right" BorderBrush="Red"></ListView>
        </DockPanel>

    </Grid>



六、WrapPanel面板(流式布局,类似Web中div的float)

   1、布局特点:

     【1】、在流延伸的方向上会排列尽可能多的控件,排列不下的控件会新起一行。

     【2】、使用Orientaion属性控制流延伸的方向。

   2、适用场合:

     需要根据容器大小动态排列控件的场合。

WrapPanelDemo:

<Grid>
        <WrapPanel>
            <Button Content="01" Height="30" Width="30" Margin="5" />
            <Button Content="02" Height="30" Width="30" Margin="5" />
            <Button Content="03" Height="30" Width="30" Margin="5" />
            <Button Content="04" Height="30" Width="30" Margin="5" />
            <Button Content="05" Height="30" Width="30" Margin="5" />
            <Button Content="06" Height="30" Width="30" Margin="5" />
            <Button Content="07" Height="30" Width="30" Margin="5" />
            <Button Content="08" Height="30" Width="30" Margin="5" />
            <Button Content="09" Height="30" Width="30" Margin="5" />
            <Button Content="10" Height="30" Width="30" Margin="5" />
            <Button Content="11" Height="30" Width="30" Margin="5" />
            <Button Content="12" Height="30" Width="30" Margin="5" />
            <Button Content="13" Height="30" Width="30" Margin="5" />
            <Button Content="14" Height="30" Width="30" Margin="5" />
            <Button Content="15" Height="30" Width="30" Margin="5" />
            <Button Content="16" Height="30" Width="30" Margin="5" />
            <Button Content="17" Height="30" Width="30" Margin="5" />
            <Button Content="18" Height="30" Width="30" Margin="5" />
            <Button Content="19" Height="30" Width="30" Margin="5" />
            <Button Content="20" Height="30" Width="30" Margin="5" />
            <Button Content="21" Height="30" Width="30" Margin="5" />
        </WrapPanel>

    </Grid>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生梦若

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值