2011-06-13 8 views
1

すべて、Silverlightで画像を表示するキャンバスをSilverlightに配置する

私は妥当な方法でサイズを変更しています。これを行うには、私は動的グリッドを使用すると考えました。グリッドの中央では、キャンバスの内側に画像を配置する必要があります。なぜなら、動的にその上にオブジェクトを配置するからです。理想的には、ユーザーがブラウザのウィンドウを大きくすると、中央の列がサイズ変更されて大きくなるため、画像が大きくなります。

は、ここで私が持っているものです:背後にあるコードで

<Viewbox Grid.Row="0" Grid.Column="1"> 
    <Canvas x:Name="cvsCenterPane"> 
     <Image x:Name="imgFormImage" MouseLeftButtonDown="imgFormImage_MouseLeftButtonDown" 
       MouseLeftButtonUp="imgFormImage_MouseLeftButtonUp" MouseMove="imgFormImage_MouseMove" /> 
    </Canvas> 
</Viewbox> 

、私はその後、イメージソースを設定します。

ここでは私のグリッドの定義です:

<Grid x:Name="LayoutRoot" Background="DarkCyan" ShowGridLines="True"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="300" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="300" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="100" /> 
    </Grid.RowDefinitions> 

私はイメージが全く表示されませんので、ビューボックスの工事中に発生した未処理の例外のいくつかの並べ替えがなければならないと思います。私はここで間違って何をしていますか?私は間違ったアプローチをしていますか?

答えて

3

例外ではありません。キャンバスには、ViewBoxを使用する際に必要な設定ディメンションがありません。

私は1つのキャンバスを使用しないことのためにあなたは、セル内の複数のコントロールを配置することができますし、あなたの周りのオブジェクトを移動する必要がある場合RenderTransformMarginまたはTranslateTransformを使用することができるので、あなたはグリッドに固執することができますプロパティ。

0

SilverlightのViewboxで子のx:Name属性を設定できないため、これは機能しません。少なくともいくつかの情報源によると:

http://blog.ningzhang.org/2008/11/viewbox-control-in-silverlight-toolkit.html
http://forums.silverlight.net/forums/p/48535/128830.aspx
http://forums.silverlight.net/forums/p/45789/123941.aspx#123941

これは仕様によるもののようです。いくつかの回避策が提案されているので、試してみます。

編集:HBは正しいようですが、例外はありません。キャンバスに寸法を設定する必要があります。

関連する問題