WPF自适应、 简单适应性布局

了解bootstrap的人知道,它的栅格系统或者说网格系统。将屏幕宽度均为12部分。

模拟这种网格,可以快速实现WPF的布局自适应。

定义全局Grid。在按自己的排版布置,设置行,设置列。分别设置各自的比例。比如:我设置行1:2:3:4。设置列1:2:2:3:1。

然后布局中的每个控件设置对应的Grid行,Grid列,以及占的行数或者列数。

代码如下:

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

        <Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Content="按钮1"></Button>
        <Button Grid.Row="0" Grid.Column="3"  Content="按钮2"></Button>
        <Button Grid.Row="1" Grid.Column="0" Content="按钮3"></Button>
        <Button Grid.Row="2" Grid.Column="2" Content="按钮4"></Button>
        <Button Grid.Row="2" Grid.Column="1" Content="按钮5"></Button>
        <Button Grid.Row="3" Grid.Column="4" Content="按钮6"></Button>
        <Button Grid.Row="3" Grid.Column="2" Content="按钮7"></Button>
        
    </Grid>

不需要设置任何高宽。界面显示如下:


加上DevExpress,再稍微布置一下,所有控件没有设置任何高度和宽度:

<dx:DXWindow
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxnav="http://schemas.devexpress.com/winfx/2008/xaml/navigation"
    xmlns:dxn="http://schemas.devexpress.com/winfx/2008/xaml/navbar"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" x:Class="TestDev003.MainWindow"
    Title="MainWindow" MinHeight="800" MinWidth="1000">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="8*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" />
            <ColumnDefinition Width="7*" />
        </Grid.ColumnDefinitions>

        <dxnav:OfficeNavigationBar Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
            <dxnav:NavigationBarItem Content="开始" />
            <dxnav:NavigationBarItem Content="编辑" />
            <dxnav:NavigationBarItem Content="设置" />
            <dxnav:NavigationBarItem Content="帮助" />
        </dxnav:OfficeNavigationBar>

        <dxn:NavBarControl Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top">
            <dxn:NavBarGroup Header="navBarGroup1">
                <dxn:NavBarItem Content="navBarItem1" />
                <dxn:NavBarItem Content="navBarItem2" />
                <dxn:NavBarItem Content="navBarItem3" />
                <dxn:NavBarItem Content="navBarItem4" />
                <dxn:NavBarItem Content="navBarItem5" />
            </dxn:NavBarGroup>
            <dxn:NavBarGroup Header="navBarGroup2">
                <dxn:NavBarItem Content="navBarItem1" />
                <dxn:NavBarItem Content="navBarItem2" />
                <dxn:NavBarItem Content="navBarItem3" />
                <dxn:NavBarItem Content="navBarItem4" />
                <dxn:NavBarItem Content="navBarItem5" />
            </dxn:NavBarGroup>
            <dxn:NavBarGroup Header="navBarGroup3">
                <dxn:NavBarItem Content="navBarItem1" />
                <dxn:NavBarItem Content="navBarItem2" />
                <dxn:NavBarItem Content="navBarItem3" />
                <dxn:NavBarItem Content="navBarItem4" />
                <dxn:NavBarItem Content="navBarItem5" />
            </dxn:NavBarGroup>
        </dxn:NavBarControl>

        <dx:DXTabControl Grid.Row="1" Grid.Column="1">
            <dx:DXTabItem Header="Tab1">
                <Grid Background="Transparent">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <dxg:GridControl Grid.Row="0" Grid.Column="0" Margin="0" AutoGenerateColumns="AddNew"
                                     EnableSmartColumnsGeneration="True" SelectionMode="MultipleRow">
                        <dxg:GridControl.Columns>
                            <dxg:GridColumn FieldName="Column1" />
                            <dxg:GridColumn FieldName="Column2" />
                            <dxg:GridColumn FieldName="Column3" />
                        </dxg:GridControl.Columns>
                        <dxg:GridControl.View>
                            <dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="True" AutoWidth="True" />
                        </dxg:GridControl.View>
                    </dxg:GridControl>

                    <dxe:SparklineEdit Grid.Row="0" Grid.Column="1" Margin="0" />
                    <dxc:ChartControl Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" Margin="0"
                                      VerticalAlignment="Top">
                        <dxc:ChartControl.Legend>
                            <dxc:Legend />
                        </dxc:ChartControl.Legend>
                        <dxc:XYDiagram2D>
                            <dxc:BarSideBySideSeries2D DisplayName="Series 1" />
                            <dxc:BarSideBySideSeries2D DisplayName="Series 2" />
                        </dxc:XYDiagram2D>
                    </dxc:ChartControl>
                </Grid>
            </dx:DXTabItem>
            <dx:DXTabItem Header="Tab2">
                <Grid Background="Transparent" />
            </dx:DXTabItem>
            <dx:DXTabItem Header="Tab3">
                <Grid Background="Transparent" />
            </dx:DXTabItem>
        </dx:DXTabControl>
    </Grid>
</dx:DXWindow>

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值