Applications=Code+Markup 读书笔记之六-七 Dock、Grid、Canvas

1 DockPanel
  DockPanel dock = new DockPanel();
  设置控件在DockPanel的位置:
    DockPanel.SetDock(ctl,Dock.Right);
  等同于:ctl.SetValue(DockPanel.DockProperty,Dock.Right);

 

示例:DockPanel中控件的摆放位置

 

2 Grid
  面板布局常用,在XAML里更方便布局。
2.1 设置行列
   Grid grid = new Grid();
   // 设置行
   RowDefinition rowdef = new RowDefinition();
   rowdef.Height = GridLength.Auto;
   grid.RowDefinitions.Add(rowdef);
   // 设置列
   ColumnDefinition coldef = new ColumnDefinition();
   coldef.Width = GridLength.Auto;
   grid.ColumnDefinitions.Add(coldef);
   设置行列的尺寸 GridLength(). 可以是Pixel,Auto,Star。
   如:new GridLength(50,GridunitType.Pixel);
       new GridLength(50,GridunitType.Star);
 
2.2 实现分割线(splitter)
  在代码中实现如: GridSplitter splitter = new GridSplitter();   splitter.Width = 10;    grid.Children.Add(splitter);
  在XAML中实现如:  <GridSplitter Focusable="False" Width="2" Background="LightGray" VerticalAlignment="Stretch" HorizontalAlignment="Right"/>
  splitter可以和其他元素在同一个单元格,但最好单独的放置在一个单元格中,容易控制面板的布局。
  splitter.HorizontalAlignment = HorizontalAlignment.Right;//默认,在单元格右边,移动时改变所在及右边的单元格宽度
  splitter.HorizontalAlignment = HorizontalAlignment.Left;//改变所在列及左边的单元格宽度
  splitter.HorizontalAlignment = HorizontalAlignment.Center;//不改变所在列的单元格宽度,而是改变两边的单元格宽度
  垂直分割线
  split.HorizontalAlignment = HorizontalAlignment.Center;
  split.VerticalAlignment = VerticalAlignment.Stretch;
  水平分割线:
  splitter.VerticalAlignment = VerticalAlignment.Center;
  splitter.HorizontalAlignment = HorizontalAlignment.Stretch;

 

示例 水平和垂直分割线

 

3、Canvas
越早加入Children Collection的Element会出现在越下层。适合显示图形,以及进行鼠标驱动的绘图。
在我做的界面设计器中,画布就是继承于Canvas,通过重载OnMouseMove、OnMouseDown等事件 实现元素的选中、拖动、摆放等功能。
 Rectangle rect = new Rectangle();
 rect.Width = canv.Width;
 rect.Height = canv.Height;
 rect.RadiusX = 24;
 rect.RadiusY = 24;
 rect.Fill = Brushes.Blue;
 canv.Children.Add(rect);
 
 注:Dock、Grid、Canvas、UniformGrid等类的Children的类型是UIElementCollection,UIElementCollection提供了几个很有用的函数,
 如Add,Insert,IndexOf,Remove,RemoveAt,RemoveRange等,方便子元素的添加删除等操作。

posted @ 2008-11-27 20:56  乔治国  阅读(480)  评论(0编辑  收藏  举报