2012-03-08 4 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

キャンバスのサイズを確認していますか?私はあなたがページのコンストラクタやUIレイアウトが実行される前に実行されている他の場所でそれをやっていると仮定しています。この場合、自動サイズ変更された要素(NaNの高さまたは幅)はすべてデフォルトのサイズになります。あなたのページのLoadedイベントハンドラのように、レイアウトが完了した後にサイズをチェックすると、本当のレンダリングサイズが表示されます。あなたのCanvasは一つだけImageを含むようになった場合

+0

「OnNavigatedTo(NavigationEventArgs e)」でチェックします。これが問題になるのだろうか? –

+0

は 'Loaded'イベントハンドラで試行し、' ActualHeight'は正しい番号を返します –

0

、あなたが使用することができます。もちろん

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

、あなたが出て切り替えることができ、あなたのCanvasは、いくつかの他のアイテムのいずれかが含まれている場合2 Imageは、別の要素のためにキャストします。

また、ラップされたImage(または他の要素)に名前を付け、それをMyImage.Widthと参照してください。

関連する問題