2012-03-08 162 views
3

如何找出在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相比如此混亂。

回答

6

你在代碼中檢查Canvas的大小?我假設你正在頁面構造器或UI佈局運行之前運行的其他地方執行此操作。在這種情況下,所有自動調整大小的元素(NaN高度或寬度)仍然具有其默認大小。如果您在佈局完成後檢查大小,如在頁面中的Loaded事件處理程序中,則應該看到真實的渲染大小。

+0

我檢查'OnNavigatedTo(NavigationEventArgs e)'。這會造成問題嗎? – 2012-03-09 10:55:03

+0

試過'Loaded'事件處理程序和'ActualHeight'給我正確的數字 – 2012-03-10 02:12:40

0

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

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

當然,你也可以切換出兩個Image投下另一種元素,如果你的Canvas包含一些其他的項目之一。

或者只是給包裝的Image(或其他元素)一個名稱,並將其引用爲MyImage.Width