Grid控件,自定义行和列
Grid控件定义时,是先定义好“行和列”,然后指定元素跨“几行,几列”。
如下:
// Create the Grid
Grid myGrid = new Grid();
myGrid.Width = 350;
myGrid.Height = 200;
myGrid.HorizontalAlignment = HorizontalAlignment.Left;
myGrid.VerticalAlignment = VerticalAlignment.Top;
myGrid.ShowGridLines = true;
SolidColorBrush myBrush = new SolidColorBrush(Colors.White);
myGrid.Background = myBrush;
// Define the Columns
ColumnDefinition colDef1 = new ColumnDefinition();
ColumnDefinition colDef2 = new ColumnDefinition();
ColumnDefinition colDef3 = new ColumnDefinition();
myGrid.ColumnDefinitions.Add(colDef1);
myGrid.ColumnDefinitions.Add(colDef2);
myGrid.ColumnDefinitions.Add(colDef3);
// Define the Rows
RowDefinition rowDef1 = new RowDefinition();
RowDefinition rowDef2 = new RowDefinition();
RowDefinition rowDef3 = new RowDefinition();
RowDefinition rowDef4 = new RowDefinition();
myGrid.RowDefinitions.Add(rowDef1);
myGrid.RowDefinitions.Add(rowDef2);
myGrid.RowDefinitions.Add(rowDef3);
myGrid.RowDefinitions.Add(rowDef4);
// Add the first text cell to the Grid
TextBlock txt1 = new TextBlock();
txt1.Text = "Expenses for 2007";
txt1.FontSize = 20;
txt1.FontWeight = FontWeights.Bold;
Grid.SetColumnSpan(txt1, 3);
Grid.SetRow(txt1, 0);
txt1.HorizontalAlignment = HorizontalAlignment.Center;
txt1.VerticalAlignment = VerticalAlignment.Center;
问题一:Silverlight下的“Grid”的“RowDefinition()”相当于“asp.net”下“Table”控件的“TableRow”,对吧???
Silverlight下的“Grid”控件有“ColumnDefinition”属性,但是没有“Cell”属性。“ColumnDefinition”它相当于“TableCell”吗???
问题二:不能定义好行,在行中定义列吗???就像asp.net一样,用“TableCell”表示列。如果在Grid下增加一行,然后在该行上增加一个单元格,单元格“跨五列”其中的内容为文本“测试”,应该怎么实现??
[解决办法]
应该不能和Table做一样的看待,虽然看着表像看起来都是行行列列的。但是要知道Grid是一个布局控件,并不是真正的Table 存储数据的,Table中可以指定某个cell但是Grid中就不能这样了。 你需要指定某行,某列,然后指定ColumnSpan 或者RowSpan,垮几行几列。 两者有相似的地方,但是毕竟不同