WPF开发快速入门【1】WPF的布局

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

概述
本文描述几款WPF中常用的布局控件。
 
Grid
Grid是WPF最常用的布局控件。 它把面板分割为固定长和宽的网格,子控件就放置在网格内。
  1.     <Grid>
  2.         <Grid.ColumnDefinitions>
  3.             <ColumnDefinition Width="100"/>
  4.             <ColumnDefinition Width="*"/>
  5.             <ColumnDefinition Width="2*"/>
  6.         </Grid.ColumnDefinitions>
  7.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  8.     </Grid>
复制代码
Grid控件有两个显著的特点:
1、行高和列宽可以设定为固定值,也可以按比例分配;
2、可以跨行或跨列。
 
StackPanel
StackPanel按顺序依次排列控件,通过Orientation="Horizontal"或Orientation="Vertical"来控制列表的方向。 
  1.     <StackPanel Orientation="Horizontal">
  2.         <TextBlock Text="Hello"/>
  3.     </StackPanel>
复制代码
 
GridSplitter
通过GridSplitter可以调整两个网格的宽度或高度。 
  1.     <Grid>
  2.         <Grid.ColumnDefinitions>
  3.             <ColumnDefinition Width="100"/>
  4.             <ColumnDefinition Width="*"/>
  5.             <ColumnDefinition Width="2*"/>
  6.         </Grid.ColumnDefinitions>
  7.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  8.     </Grid>    <Grid>
  9.         <Grid.ColumnDefinitions>
  10.             <ColumnDefinition Width="100"/>
  11.             <ColumnDefinition Width="*"/>
  12.             <ColumnDefinition Width="2*"/>
  13.         </Grid.ColumnDefinitions>
  14.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  15.     </Grid>    <StackPanel Orientation="Horizontal">
  16.         <TextBlock Text="Hello"/>
  17.     </StackPanel>            
复制代码
GridSplitter的宽度和颜色都可以设置。
 
DockPanel
DockPanel控件可以在主要的显示面板周五显示可以停靠的面板。 
  1.     <Grid>
  2.         <Grid.ColumnDefinitions>
  3.             <ColumnDefinition Width="100"/>
  4.             <ColumnDefinition Width="*"/>
  5.             <ColumnDefinition Width="2*"/>
  6.         </Grid.ColumnDefinitions>
  7.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  8.     </Grid>    <Grid>
  9.         <Grid.ColumnDefinitions>
  10.             <ColumnDefinition Width="100"/>
  11.             <ColumnDefinition Width="*"/>
  12.             <ColumnDefinition Width="2*"/>
  13.         </Grid.ColumnDefinitions>
  14.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  15.     </Grid>    <Grid>
  16.         <Grid.ColumnDefinitions>
  17.             <ColumnDefinition Width="100"/>
  18.             <ColumnDefinition Width="*"/>
  19.             <ColumnDefinition Width="2*"/>
  20.         </Grid.ColumnDefinitions>
  21.         <TextBlock Text="hello" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Center" Margin="10"/>
  22.     </Grid>    <StackPanel Orientation="Horizontal">
  23.         <TextBlock Text="Hello"/>
  24.     </StackPanel>    <StackPanel Orientation="Horizontal">
  25.         <TextBlock Text="Hello"/>
  26.     </StackPanel>   
复制代码
需要注意的是,主面板一定要放在最后描述。通过下面代码可以显示或隐藏Dock面板: 
  1.     public class PageLayoutViewModel : Screen
  2.     {
  3.         public bool IsLeftShow { get; set; } = true;
  4.         public bool IsRightShow { get; set; } = true;
  5.         public Visibility LeftVisibility => IsLeftShow ? Visibility.Visible : Visibility.Collapsed;
  6.         public Visibility RightVisibility => IsRightShow ? Visibility.Visible : Visibility.Collapsed;
  7.         public void LeftClick()
  8.         {
  9.             IsLeftShow = !IsLeftShow;
  10.         }
  11.         public void RightClick()
  12.         {
  13.             IsRightShow = !IsRightShow;
  14.         }
  15.     }
复制代码
View Code  
DockPanelSplitter
有没有既可以停靠又可以调整宽度的面板呢?官方没有提供,但git上有。
下载地址:JVimes/DockPanelSplitter: Like WPF's GridSplitter, but for DockPanel instead of Grid. (github.com)
 
资源
系列目录:WPF开发快速入门【0】前言与目录 
代码下载:Learn WPF: WPF学习笔记 (gitee.com)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表