技术开发 频道

WPF企业应用基础:布局全接触

  使用GridSplit分割

  使用GridSplit控件结合Grid控件实现类似于WinForm中SplitContainer的功能,这个大家在WinForm当中经常用到,我们也不多做介绍。

  第一种,固定长度——宽度不够,会裁剪,不好用。单位pixel。

  第二种,自动长度——自动匹配列中最长元素的宽度。

  第三种,比例长度——*表示占用剩余的全部宽度;两行都是*,将平分剩余宽度;像上面的一个2*,一个*,表示前者2/3宽度。

  跨越多行和多列

<Rectangle Fill="Silver" Grid.Column="1" Grid.ColumnSpan="3"/>

   使用Grid.ColumnSpan和Grid.RowSpan附加属性可以让相互间隔的行列合并,所以元素也可以跨越多个单元格。

  使用GridSplit分割

<GridSplitter Height="6"
VerticalAlignment
="Stretch"
HorizontalAlignment
="Stretch"
               Grid.Row
="2" Grid.Column="2">
</GridSplitter>

   使用GridSplit控件结合Grid控件实现类似于WinForm中SplitContainer的功能,这个大家在WinForm当中经常用到,我们也不多做介绍。

 

  要实现的效果如下图(用XAML和C#实现同一效果):

 

  XAML代码实现:

<Window    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
x:Class
="WPFLayoutDemo.GridDEMO"  
  x:Name
="Window"    
Title
="GridDEMO"    WindowStartupLocation="CenterScreen"    Width="640" Height="480">
  
<Grid Width="Auto" Height="Auto" >  
      
<Grid.ColumnDefinitions>
          
<ColumnDefinition Width="139"/>
  
<ColumnDefinition Width="184*"/>
<ColumnDefinition Width="45*" />

<ColumnDefinition Width="250*"/>  
      
</Grid.ColumnDefinitions>  
              
<Rectangle Fill="Azure" Grid.ColumnSpan="2"
Margin
="0,0,21,0" />  
      
<Rectangle Fill="Silver" Grid.Column="1" Grid.ColumnSpan="3"/>  
  
</Grid>
</Window>

   C#代码实现:

namespace WPFLayoutDemo{  
  
public partial class GridDEMOCodeBehind    {      
public GridDEMOCodeBehind()    
    {          
  this.InitializeComponent();    
        Grid grid
= new Grid();
           grid.Width
= Double.NaN;  
//这个就相当于在XAML中设置

Width
="Auto"          
grid.Height
= Double.NaN;  
//这个就相当于在XAML中设置Height="Auto"          
//把grid添加为窗体的子控件  
          this.Content
= grid;  
        
//列一        
   ColumnDefinition cd1
= new ColumnDefinition();        
    cd1.Width
= new GridLength(139);          
  grid.ColumnDefinitions.Add(cd1);          
  
//列二            
ColumnDefinition cd2
= new ColumnDefinition();          
cd2.Width
= new GridLength(1, GridUnitType.Star);  
         grid.ColumnDefinitions.Add(cd2);      
    
//列三        
    ColumnDefinition cd3
= new ColumnDefinition();          
cd3.Width
= new GridLength(2, GridUnitType.Star);  
         grid.ColumnDefinitions.Add(cd3);            
//把单元格添加到grid中        
   Rectangle r1c1
= new Rectangle();
            r1c1.Fill
= new SolidColorBrush(Colors.Azure);        
   r1c1.SetValue(Grid.ColumnProperty,
0);          
r1c1.SetValue(Grid.RowProperty,
0);          
grid.Children.Add(r1c1);        
    Rectangle r1c23
= new Rectangle();        
   r1c23.Fill
= new SolidColorBrush(Colors.Silver);        
   r1c23.SetValue(Grid.ColumnProperty,
1);          
  r1c23.SetValue(Grid.ColumnSpanProperty,
2);          
grid.Children.Add(r1c23);    
    }  
  }
}
0
相关文章