如果这个问题已经在某个地方得到回答,我很抱歉,但我找不到它,我在谷歌上搜索了几个小时。我需要 Canvas.ActualWidth 和 Canvas.ActualHeight 属性来计算代码中该画布上元素的大小。但是,在 xaml 代码中,我没有以像素为单位指定画布的高度和宽度,以便程序会自动将网格上的元素调整为用户屏幕的宽度和高度。我不能将像素用作该画布的高度和宽度,但我仍然需要它的 ActualHeight 和 ActualWidth 来计算应该出现在该画布上的矩形。在代码中我这样设置:
public void CreateRectanglesOnCanvas(int heightwidth)
{
for (int i = 0; i < heightwidth; i++)
{
for (int j = 0; j < heightwidth; j++)
{
Rectangle r = new Rectangle
{
Height = PreviewCanvas.ActualHeight / heightwidth - 1.0,
Width = PreviewCanvas.ActualWidth / heightwidth - 1.0,
Fill = Brushes.White
};
PreviewCanvas.Children.Add(r);
Canvas.SetLeft(r, j * PreviewCanvas.ActualWidth / heightwidth);
Canvas.SetTop(r, i * PreviewCanvas.ActualHeight / heightwidth);
}
}
}
当我运行程序时,它崩溃了,错误是:“-1”不是“Width”属性的有效值。”调试时我发现ActualHeight和ActualWidth属性都为零。如何使用画布的高度和宽度,同时仍然只在 xaml 代码中指定 Grid.Row 和 Grid.Column?如果我的问题不清楚,我很抱歉。