2009-12-11 3 views
1

J'ai une application Silverlight qui ne fonctionnera plus dans le navigateur. Je veux redimensionner la mise en page en fonction de la taille de la fenêtre. La mise en page est composée d'une grille. Cette grille a un canevas qui héberge une bordure et d'autres contrôles. Le canevas est redimensionné correctement lorsque la fenêtre est redimensionnée. Cependant, le contrôle des frontières semble être une taille fixe. Comment puis-je étendre le contrôle de bordure à la largeur du canevas et redimensionner si la fenêtre est redimensionnée? Mon code ressemble à ceci:Silverlight - Mise en page dynamique

<Grid x:Name="LayoutRoot"> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition/> 
    <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <Canvas x:Name="myCanvas" Background="Lime"> 
    <Border Canvas.Top="77" Border="Black" BorderThickness="2"> 
     <TextBlock x:Name="myTextBlock" /> 
    </Border> 
    </Canvas> 
</Grid> 

Nous vous remercions de votre aide!

Répondre

1

En supposant que vous êtes désireux le Canvas être lié à la première Grid.Column, vous pouvez ajouter RowDefinitions puis déplacer la frontière vers l'extérieur du canevas, puis le code suivant devrait fonctionner.

(testé uniquement dans WPF)

<Grid x:Name="LayoutRoot"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="77"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <Canvas x:Name="myCanvas" Background="Lime" Grid.RowSpan="2"> 
    </Canvas> 

    <Border Grid.Row="1" Border="Black" BorderThickness="2" VerticalAlignment="Top"> 
     <TextBlock x:Name="myTextBlock" Text="Happy TEXT" /> 
    </Border> 
</Grid> 

Du nouveau: <Grid.RowDefinitions>, Grid.RowSpan="2" Canvas et Grid.Row="1", plus VerticalAlignment="Top" à la frontière. Texte ajouté pour les tests.

Questions connexes