在WP7上与SL网格进行了2个小时的斗争。我使用以下代码构建我的网格:
public void initUIBoard() {
int x, y;
Button b;
for (x = 0; x < mine.cRows; x++) {
RowDefinition rd = new RowDefinition();
rd.Height = new GridLength(20);
uiBoard.RowDefinitions.Add(rd);
}
for (y = 0; y < mine.cColumns; y++) {
ColumnDefinition cd = new ColumnDefinition();
cd.Width = new GridLength(20);
uiBoard.ColumnDefinitions.Add(cd);
}
for (x = 0; x < mine.cRows; x++)
for (y = 0; y < mine.cColumns; y++)
{
b = new Button();
b.Click += new RoutedEventHandler(this.caseClick);
b.Tag = mine.gameBoard[x][y];
Grid.SetRow(b, x);
Grid.SetColumn(b, y);
uiBoard.Children.Add(b);
}
}
for (x = 0; x < mine.cRows; x++) {
RowDefinition rd = new RowDefinition();
rd.Height = new GridLength(20);
uiBoard.RowDefinitions.Add(rd);
}
for (y = 0; y < mine.cColumns; y++) {
ColumnDefinition cd = new ColumnDefinition();
cd.Width = new GridLength(20);
uiBoard.ColumnDefinitions.Add(cd);
}
for (x = 0; x < mine.cRows; x++)
for (y = 0; y < mine.cColumns; y++)
{
b = new Button();
b.Click += new RoutedEventHandler(this.caseClick);
b.Tag = mine.gameBoard[x][y];
Grid.SetRow(b, x);
Grid.SetColumn(b, y);
uiBoard.Children.Add(b);
}
}
问题是,我的网格显示为空,我是否对这些行/列定义做错了什么?
提前致谢
答案 0 :(得分:2)
经过一些实验,看起来GridLength
没有正确计算像素高度
因为创建的网格单元不够大,所以不显示控件。
尝试增加用于网格长度的大小。我做了以下操作并获得了一些输出。
rd.Height = new GridLength(40);
或者,考虑通过动态调整大小来设置高度和宽度。 e.g:
rd.Height = new GridLength(1, GridUnitType.Auto);
如果您可以更多地调查此高度问题并发现它是高度问题错误,请将其提交给Microsoft。
答案 1 :(得分:1)
您的代码似乎工作正常(我试过Silverlight非Winphone,但应该是相同的。)
我的猜测是原因在于其他地方,例如。另一个覆盖uiBoard网格的元素,或者按钮是透明的,没有背景颜色/边框。