2011-06-13 4 views
1

Tous,Mettre Viewbox Inside Canvas dans Silverlight Avec image

Je suis en train de faire l'application silverlight je fais redimensionne de manière raisonnable. Pour ce faire, j'ai pensé utiliser une grille dynamique. Au centre de la grille, j'ai besoin de mettre une image à l'intérieur d'une toile parce que je vais positionner dynamiquement les objets par-dessus. Idéalement, lorsque l'utilisateur agrandit la fenêtre du navigateur, la colonne centrale peut être redimensionnée et agrandie, ce qui augmente l'image.

Voici ce que j'ai:

<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> 

Dans le code derrière, je puis définir la source d'image.

Voilà ma définition de la grille:

<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> 

Je pense qu'il doit y avoir une sorte d'exception non gérée se produisant lors de la construction du Viewbox parce que l'image ne montre pas du tout. Qu'est-ce que je fais mal ici? Est-ce que je prends la mauvaise approche?

Répondre

3

Il n'y a pas d'exception, le canevas n'a aucune dimension définie, ce qui est obligatoire lorsque vous souhaitez utiliser une ViewBox.

I pour on pas utiliser une toile, vous pouvez coller avec la grille puisque vous pouvez placer plus d'un contrôle dans une cellule et si vous avez besoin de déplacer les objets autour de vous pouvez utiliser le Margin ou TranslateTransform dans le RenderTransform propriété.

0

Cela ne fonctionne pas car vous ne pouvez pas définir l'attribut x: Name des enfants dans une Viewbox avec Silverlight. Au moins selon quelques sources:

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

cela semble être par la conception. Quelques solutions de contournement ont été suggérées, donc je vais les essayer. Editer: HB semble être correct, il n'y a aucune exception, le Canvas avait besoin d'avoir des dimensions définies.