0

如果这个问题已经在某个地方得到回答,我很抱歉,但我找不到它,我在谷歌上搜索了几个小时。我需要 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?如果我的问题不清楚,我很抱歉。

4

0 回答 0