11
votes

WPF - Comment arrêter la zone de texte de l'autosser?

J'ai une zone de texte dans mon arbre visuel comme suit ..

p>

  • fenêtre code>
    • grille code>
      • listbox code>
        • itemTemplate code>
          • DataTemplate code>
            • grille code>
              • grille code>
                • textbox code> ... li> ul> li> ul> li> ul> li> ul> li> ul> li> ul> li> ul> li> ul>

                  La zone de texte est définie comme .. p>

                  <TextBox Height="Auto" 
                           Text="{Binding Path=LyricsForDisplay}" 
                           MinHeight="50" 
                           MaxHeight="400"  
                           Visibility="Visible" 
                           VerticalScrollBarVisibility="Auto" 
                           IsReadOnly="True" 
                           AllowDrop="False" 
                           TextWrapping="WrapWithOverflow">
                  </TextBox>
                  


0 commentaires

5 Réponses :


5
votes

quelque chose doit contenir la largeur horizontale disponible dans les zones de texte, dans ce cas, vous souhaitez arrêter la liste de la croissance horizontalement indéfiniment: xxx


2 commentaires

"La propriété" horizontalscrollbarVisilité "n'a pas été trouvée dans le type" Listbox "."


C'est ScrollViewer.horizontalscrollBarVisibilité en fait.



0
votes

Essayez de définir la propriété maxwidth dans votre zone de texte xxx


0 commentaires

10
votes

Les travaux suivants:

<ListBox Name="ListBox1"
            ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid>
                    <TextBox TextWrapping="Wrap"></TextBox>
                </Grid>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


0 commentaires

2
votes

Deux Modifier le code:
1- Ajouter une balise de frontière avec votre grille.column et votre grille.row taille que vous êtes NEADS.
2- Largeur et hauteur de la zone de texte réglée.
Exemple: xxx


0 commentaires

8
votes

Malheureusement, la zone de texte régulière n'autorise pas l'auto-objetsise de s'adapter au parent, mais pas d'auto-objetsiser lorsque le texte ne correspond pas.

Pour résoudre ce problème, vous pouvez utiliser une zone de texte personnalisée qui indique un choix souhaité (0, 0 ) Taille. C'est un piratage laid, mais ça marche. P>

dans votre fichier .xaml.cs: p> xxx pré>

puis, dans votre fichier .xaml: p >

<Window x:Class="YourNamespace.YourWindow"
    ...
    xmlns:local="clr-namespace:YourNamespace">
        ...
        <local:TextBoxThatDoesntResizeWithText Height="Auto" 
                                               Text="{Binding Path=LyricsForDisplay}" 
                                               MinHeight="50" 
                                               MaxHeight="400"  
                                               Visibility="Visible" 
                                               VerticalScrollBarVisibility="Auto" 
                                               IsReadOnly="True" 
                                               AllowDrop="False" 
                                               TextWrapping="WrapWithOverflow">
        </local:TextBoxThatDoesntResizeWithText>
        ...
</Window>


3 commentaires

C'était la seule chose qui a fonctionné pour moi! Cela ressemble à un comportement qui devrait faire partie du contrôle standard. Cheers, @ajarov m'a sauvé beaucoup de temps à filer mes roues!


M'a aidé aussi! Solution facile, même si un peu "hacky", merci!


Résolu mon problème aussi, après beaucoup de cheveux. Dans les versions récentes de C #, la fonction peut être une doublure: Support de substitution protégé Measeverride (contrainte de taille) => Taille.empty;