找到画布的尺寸

3

如何找到在xaml文件中创建的Canvas的大小?

例如,我通过以下方式创建了一个Canvas:

<Page
    x:Class="MyApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

        <Canvas x:Name="canvas" Background="White">
        </Canvas>
</Page>

全屏显示为白色或我指定的画布颜色

在我的类中我尝试过,但没有成功。

double h = canvas.Height; // NaN
h = canvas.ActualHeight;  // 0

那么我如何找出画布的实际尺寸?或者尺寸为0,那么如何使画布全屏显示?

我是一名新的C#和Metro开发者,对于与iOS相比的所有工作方式感到困惑。

2个回答

6

你在代码的哪个地方检查Canvas的大小?我猜你可能是在页面构造函数或者其他在UI布局之前运行的地方进行检查。在这种情况下,所有自动调整大小的元素(高度或宽度为NaN)仍然具有其默认大小。如果你在页面的Loaded事件处理程序中,在布局完成后检查大小,则应该能看到真正的渲染大小。


我在 OnNavigatedTo(NavigationEventArgs e) 进行了检查。这会有问题吗? - Bryan Chen
尝试在“Loaded”事件处理程序上使用,“ActualHeight”给出了正确的数字。 - Bryan Chen

0

如果你的Canvas只包含一个Image,你可以使用以下代码:

var Width = ((Image) (MyCanvas.Children[0])).Width;
var Height = ((Image) (MyCanvas.Children[0])).Height;

当然,如果你的Canvas中包含其他元素,你可以替换掉两个Image类型转换。另外,你也可以给包装的Image(或其他元素)命名,并且以MyImage.Width的方式引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接