Windows Phone获取网格的高度和宽度

时间:2014-05-24 16:56:35

标签: windows-phone-7 windows-phone-8

我试图获得网格的高度和宽度:

int numberOfColumnsInGameView = (int)(gameView.Width / objectSize);
int numberOfRowsInGameView = (int)(gameView.Height / objectSize -0.5);

gameView是网格。当我尝试分配变量时,我有var = NaN

3 个答案:

答案 0 :(得分:1)

我建议您使用Grid.ActualHeightGrid.ActualWidth属性。 仅当您需要设置新值时,才应使用HeightWidth

答案 1 :(得分:0)

最保守的方式可能就是做这样的事情:

private double HeightOf(FrameworkElement element)
{
    if (double.IsNaN(element.Height))
        return element.ActualHeight;
    if (double.IsNaN(element.ActualHeight))
        return element.Height;
    return Math.Max(element.Height, element.ActualHeight);
}

这样,您将涵盖以下情况:

  • 渲染元素,但未设置明确的高度(→ActualHeight
  • 元素尚未渲染,但具有明确的高度(→Height
  • 两者都不会(将返回0)

答案 2 :(得分:0)

我明白了。

this.Loaded += MainPage_Loaded; 
.........
private void GeneranteLevel(int level)
    {
int numberOfColumnsInGameView = (int)(gameView.ActualWidth / objectSize);
int numberOfRowsInGameView = (int)(gameView.ActualHeight / objectSize -0.5);
........