查找画布的尺寸

问题描述:

如何找出在xaml文件中创建的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#和城域开发人员,所以一切工作如何与iOS相比如此混乱。

你在代码中检查Canvas的大小?我假设你正在页面构造器或UI布局运行之前运行的其他地方执行此操作。在这种情况下,所有自动调整大小的元素(NaN高度或宽度)仍然具有其默认大小。如果您在布局完成后检查大小,如在页面中的Loaded事件处理程序中,则应该看到真实的渲染大小。

+0

我检查'OnNavigatedTo(NavigationEventArgs e)'。这会造成问题吗? – 2012-03-09 10:55:03

+0

试过'Loaded'事件处理程序和'ActualHeight'给我正确的数字 – 2012-03-10 02:12:40

如果您Canvas恰好只包含一个Image,你可以使用:

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

当然,你也可以切换出两个Image投下另一种元素,如果你的Canvas包含一些其他的项目之一。

或者只是给包装的Image(或其他元素)一个名称,并将其引用为MyImage.Width