写在前面:Grid是WPF中重要的容器控件,它的作用与Table控件有相似之处,都需要针对每一个格子来设置内容,如设置长度宽度和每一个行列的数据。它拥有与DataTable相似的行列定义,如DataTable中对应DataRow,DataColumn而Grid容器也有这些定义,像ColumnDefinition,RowDefinition。而将控件放到某一个格子上面,也不容易的。设置时可以使用静态方法Grid.SetRow和Grid.SetColumn。
效果图
下图就是一个Grid,有四个格子,第一行一列放了一个ListBox,第一行二列放了一个TreeView,第二行一列放了一个Button,第二行二列放了一个TextBox。而每个格式之间都有虚线分隔,各个子控件可以使用Margin属性来修改其与格子边框的隔离。

源代码
ShowGridLines=true是用来设置格子之间的分隔线的,ColumnDefinition,RowDefinition是用来定义行和列的,ColumnDefinitions,RowDefinitions是行和列的集合,RowDefinition有Height属性没Width属性,类形为GridLength,ColumnDefinition有Width属性而没有Height属性,类形为GridLength。如果需要定义控件在哪个格子上面,可以使用Grid.SetColumn(control, index); Grid.SetRow(control, index);control就是那个控件,index就是所在行或所在列的顺序。
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Controls.Primitives;
namespace WPF
{
public class WpfGrid:Window
{
[STAThread]
public static void Main()
{
Application _application = new Application();
_application.Run(new WpfGrid());
}
public WpfGrid()
{
Title = "测试Grid";
//设置Window的长和宽
Width = 96 * 4;
Height = 96 * 3;
//设置Grid
Grid _grid = new Grid();
_grid.ShowGridLines = true;
Content = _grid;
//增加两列
for (int i = 0; i < 2; i++)
{
ColumnDefinition _columnDefinition = new ColumnDefinition();
_columnDefinition.Width = new GridLength(50, GridUnitType.Star);
_grid.ColumnDefinitions.Add(_columnDefinition);
}
//增加两行
for (int i = 0; i < 2; i++)
{
RowDefinition _rowDefinition = new RowDefinition();
_rowDefinition.Height = new GridLength(80, GridUnitType.Star);
_grid.RowDefinitions.Add(_rowDefinition);
}
//第一个控件ListBox
ListBox _listBox = new ListBox();
for (int i = 0; i < 5; i++)
{
_listBox.Items.Add("ListBox项" + i.ToString());
}
_listBox.Background = Brushes.Yellow;
_grid.Children.Add(_listBox);
Grid.SetColumn(_listBox, 0);
Grid.SetRow(_listBox, 0);
//第二个控件TreeView
TreeView _treeView = new TreeView();
for (int i = 0; i < 10; i++)
{
_treeView.Items.Add("TreeNode" + i.ToString());
}
_treeView.Background = Brushes.Pink;
_grid.Children.Add(_treeView);
Grid.SetColumn(_treeView, 1);
Grid.SetRow(_treeView, 0);
//第三个控件Button
Button _button = new Button();
_button.Content = "第三个控件Button";
_button.Margin = new Thickness(10);
_grid.Children.Add(_button);
Grid.SetColumn(_button, 0);
Grid.SetRow(_button, 1);
TextBox _textBox = new TextBox();
_textBox.Text = "第四个控件TextBox";
_textBox.Margin = new Thickness(10);
_grid.Children.Add(_textBox);
Grid.SetColumn(_textBox, 1);
Grid.SetRow(_textBox, 1);
}
}
}
出处:小作坊网ChakMan原创
添加到百度搜藏
添加到雅虎收藏