2010-05-25 2 views
1

J'ai du mal à comprendre cela. Voici ce que je dois:Comment définir une RichTextBox dans Silverlight 4 pour ajuster la hauteur de son parent et la conserver lors du redimensionnement?

<StackPanel x:Name="container" VerticalAlignment="Stretch"> 
    <RichTextBox Height="???" /> 
</StackPanel> 

En fait ce que je sais que je peux faire est de lier RichTextBox Taille à sa hauteur de ses parents (Height="{Binding ElementName=container, Path=ActualHeight}" Malheureusement, cela ne fonctionne sur la charge, parce qu'il semble ActualHeight et ActualWidth don. t notify des changements.

Alors, quelle est la meilleure façon Silverlight 4 pour dire RichTextBox ou TextBlock, il n'a pas d'importance, pour remplir la hauteur de sa mère, et de maintenir la barre de défilement si elle est la hauteur du contenu est plus grand. Est le seul moyen de lier certains événements Resize et de maintenir la hauteur explicitement? Cela me semble vraiment moche? Quelqu'un at-il eu ce problème aussi?

Toutes les ressources ou informations sont très appréciées! Merci.

Répondre

0

Ivan,

La meilleure façon de résoudre ce problème est d'utiliser une grille comme parent pour le RickTextBox, au lieu d'un StackPanel. Par défaut, une grille "Strectch" son contenu pour occuper tout l'espace disponible. Un StackPanel ne fera qu'étirer son contenu en une seule fois.

À titre d'exemple, collez le code XAML suivant dans mon XamlViewer pour voir la différence:

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Row="0"> 
      <RichTextBox 
       Foreground="Blue" FontSize="24" Background="Yellow"> 
       <Paragraph>RichTextBox inside a StackPanel</Paragraph> 
      </RichTextBox> 
     </StackPanel> 
     <Grid Grid.Row="1"> 
      <RichTextBox 
       Foreground="Blue" FontSize="24" Background="Tan"> 
       <Paragraph>RichTextBox inside a Grid</Paragraph> 
      </RichTextBox> 
     </Grid> 
    </Grid> 
</UserControl> 

Bonne chance, Jim
McCurdy, Face à face Logiciel et YinYangMoney

+0

ne contribue pas à résoudre le problème réel. Lorsque la hauteur RichTextBox n'est pas explicitement définie, elle sera redimensionnée pour s'adapter à son contenu et redimensionnera (si le contenu est plus grand que le conteneur) le parent, peu importe ce que vous définissez. –

+0

Peut-être que je n'étais pas clair. Vous ne devriez pas avoir à lier la hauteur. Si le RichTextBox est placé dans une grille, il conservera la même taille que la grille, car une grille étendra son contenu par défaut. Un StackPanel va seulement étirer son contenu dans une dimension. J'ai édité ma réponse ci-dessus pour clarifier. –

+0

Je l'ai totalement compris la première fois. :) Le problème n'est pas ça. Commencez à taper dans le RichTextBox jusqu'à ce qu'il commence à défiler. Le problème est qu'il ne le fait jamais et redimensionne la taille de lui-même et c'est le parent. –

Questions connexes