Question

Comment faire une largeur de grille à 100% à l'intérieur d'une toile? Voici un XAML simple mais cela ne fonctionne pas comme prévu.

<Canvas Background="MediumSlateBlue" Width="Auto" Height="Auto" >
    <Grid x:Name="LayoutRoot" MouseMove="MainPage_MouseMove" Background="Beige" >
        <TextBlock x:Name="lblDisplay" Height="24" HorizontalAlignment="Right" VerticalAlignment="Top" Width="128" Text="asdf" ></TextBlock>
    </Grid>
</Canvas>

Je ne comprends pas pourquoi ma grille ne prend pas autant de place que possible! J'ai même essayé d'ajouter une seule ligne et une définition de colonne avec une largeur de 100 *, mais toujours ma grille ne prendra autant d'espace que l'étiquette qu'il contient. L'objectif est d'avoir une toile, avec un enfant de grille et occupe 100% de largeur et de hauteur. Ceci est important car j'ai besoin que le Silverlight redimensionne lorsque le navigateur redimensionne.

Était-ce utile?

La solution 2

On dirait que j'ai trouvé une solution ici

http://forums.silverlight.net/forums/t/13415.aspx

J'ai ajusté mon code pour redimensionner automatiquement ma grille chaque fois que le contenu est redimensionné. Cela me permettra de positionner les éléments à l'aide de Canvas.leftProperty et de maintenir la position des éléments alignés horizontalement / verticalement.

J'ai envisagé d'utiliser juste une grille comme ma mise en page principale, mais si le besoin résiste pour animer un objet, la marge ne peut pas être animée. De plus, le réglage de la marge gauche et en haut pendant l'événement Mousemove n'a pas positionné avec précision mon élément sur la position du curseur.

Autres conseils

Canvas présente son contenu en utilisant un positionnement absolu. C'est beaucoup plus similaire à la façon dont les formulaires Windows ont fonctionné en ce que tous les éléments doivent avoir un haut, une gauche, une largeur et une hauteur spécifiés.

Vous pouvez obtenir des fonctionnalités similaires en remplaçant le canevas par une grille qui n'a pas de lignes / colonnes définies et d'utiliser des marges pour placer des éléments enfants.

Vérifiez également que votre formulaire étire en fait l'application Silverlight.

<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="clientbin/MyApp.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40818.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top