2010-01-12 10 views
1

J'ai un contrôle utilisateur Silverlight qui a plusieurs contrôles de canevas dans un panneau de pile. Je sais que je peux définir la largeur et la hauteur de chaque panneau de toile manuellement dans le Xaml, mais je veux qu'ils aient la même taille.Silverlight Canvas Débutant Question

Est-il possible que je peux définir une propriété dans un endroit UserControl.Resources:

<UserControl.Resources> 
    <Setter Property Name="aWidth" Value="50" /> 
    <Setter Property Name="aHeight" Value="50" /> 
</UserControl.Resources> 

<StackPanel Orientation="Horizontal"> 
<Canvas x:Name="canvas1" Width="{StaticResource aWidth}" Height="{StaticResource aHeight}" /> 
<Canvas x:Name="canvas2" Width="{StaticResource aWidth}" Height="{StaticResource aHeight}" /> 
</StackPanel> 

de sorte que chaque panneau est la même largeur et la hauteur et je dois seulement pour régler une fois.

Répondre

1

Ajouter cette déclaration d'espace de noms XML à la racine de votre Xaml:

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

Et changer vos ressources pour ressembler à ce qui suit:

<UserControl.Resources> 
    <sys:Double x:Key="aWidth" >50</sys:Double> 
    <sys:Double x:Key="aHeight" >50</sys:Double> 
</UserControl.Resources> 

Vous devriez maintenant pouvoir utiliser les {StaticResource} comme vous le souhaitez.

0

Utilisez une grille au lieu

<Grid Width="600" Height="300"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" />   
    </Grid.ColumnDefinitions> 
    <Canvas x:Name="canvas1" /> 
    <Canvas x:Name="canvas2" Grid.Column="1" /> 
</Grid> 

Les deux toile de auront la hauteur de 300 et une largeur de 300