1

全て、

私が作成している 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>

画像がまったく表示されないため、ビューボックスの構築中に何らかの未処理の例外が発生しているに違いないと思います。ここで何が間違っていますか?私は間違ったアプローチを取っていますか?

4

2 に答える 2

3

例外はありません。キャンバスには、ViewBox を使用する場合に必要なサイズが設定されていません。

私はキャンバスを使用しません。セルに複数のコントロールを配置できるため、グリッドを使用できます。オブジェクトを移動する必要がある場合は、プロパティでMarginまたはを使用できます。TranslateTransformRenderTransform

于 2011-06-13T16:51:52.270 に答える
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 は正しいようです。例外はありません。キャンバスには寸法を設定する必要がありました。

于 2011-06-13T18:19:45.080 に答える