Comment se débarrasser de l'espace d'un paragraphe? J'ai essayé d'utiliser négatif Mon code est mentionné ci-dessous: p> et, les sorties pour le code ci-dessus sont données ci-dessous: p> EDIT: Voici un exemple qui ferait un peu plus de sens (selon les commentaires ): p> ce qui rend exactement le même résultat. p> p> marge / rembourrage code> mais il n'accepte pas les valeurs négatives pour ces propriétés. Toute idée?
p>
4 Réponses :
J'hésite à poster cela, car je suis sûr qu'il doit y avoir une meilleure façon, mais que personne d'autre n'a répondu ....
Document de flux paramètre Vous pouvez penser que régler Donc, afin de supprimer complètement votre paragraphe vierge, vous devez définir J'ai essayé d'écrire un déclencheur qui le ferait automatiquement pour les paragraphes vides, mais malheureusement section code> apparaît pour envelopper Paragraphes avec WhitSpace équivilent au paragraphe Code> LigneHeight Code>. P>
LineHeight code> ne peut pas être 0, mais cela peut être très petit. Réglage
lineheight code> sur la section
code> supprimera WhitSpace autour de tous les paragraphes. P>
p>
LineHeight code> Comme cela n'affectera généralement pas le texte à l'intérieur des paragraphes, car le code par défaut
LinestackingStrategy code> utilise la hauteur de la police à la place. Notez comment le paragraphe vierge a toujours une hauteur. P>
LineHeight code> uniquement sur le paragraphe vide fonctionnerait, mais
section code> honorera toujours le blancheur du paragraphe précédent. Puisque le paragraphe précédent a normalement
LineHeight Code>, vous obtenez toujours la marge. P>
lineheight code > Sur le paragraphe vierge et précédent, et dites à votre paragraphe vierge d'utiliser le
lineheight code> comme hauteur de bloc: p>
p>
paragraphe. Inlines.Count code> n'est pas une dépendanceProperty et d'essayer de l'utiliser pour détecter les paragraphes vierges n'est pas fiable en fonction du moment où le paragraphe est renseigné. P> p>
Je suivais cette stratégie exacte et rencontré des inlines.Count = 0 déclenchement de tous les paragraphes. +1 :)
On dirait un peu piraté mais ça marche bien! À propos du paragraphe.Inlines.Count, je n'ai pas besoin de faire cela parce que je sais déjà ce qui est dans mes paragraphes. La plupart du temps (dans mon cas), le paragraphe ne contient qu'un seul textblock et je sais quel est le texte, mais cacher le texte textuel laisse toujours un espace vide en raison du paragraphe. Ce qui explique pourquoi j'ai besoin de savoir comment se débarrasser de cet espace.
C'est bien piraqué, c'est pourquoi j'étais hésitant à poster. Heureux qu'il semble fonctionner au moins.
Je laisserai un peu de temps pour que les autres donnent une réponse et si personne n'a une bonne réponse, je vous donnerai la "réponse correcte" et la générosité. Merci pour votre contribution sur mon problème!
Aucun problème. Je suis intéressé à voir s'il y a une solution "appropriée".
Considérant que flowdocument code> n'est pas vraiment un composant de mise en page, je dirais que la seule solution "appropriée" éliminerait tout le paragraphe du document. Si ce n'est pas un choix, c'est une solution aussi bonne que possible.
Si cela est réalisable dans votre scénario d'avoir des propriétés VM indiquant si les paragraphes sont vides, cela fonctionnerait: -
<FlowDocument> <FlowDocument.Resources> <Style TargetType="{x:Type Paragraph}"> <Setter Property="Margin" Value="0,0,0,18"/> <Style.Triggers> <Trigger Property="Tag" Value="True"> <Setter Property="Margin" Value="0"/> <Setter Property="LineHeight" Value="0.1"/> <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/> </Trigger> </Style.Triggers> </Style> </FlowDocument.Resources> <Section> <Paragraph x:Name="p1" Tag="{Binding IsPara1Empty}">1</Paragraph> <Paragraph x:Name="p2" Tag="{Binding IsPara2Empty}">2</Paragraph> <Paragraph x:Name="p3" Tag="{Binding IsPara3Empty}"></Paragraph> <Paragraph x:Name="p4" Tag="{Binding IsPara4Empty}">4</Paragraph> </Section> </FlowDocument>
Qu'est-ce que vm dans "vm propriétés" signifie?
@ Maximetremblay-Savard - Modèle de vue (en supposant que vous utilisez mvvm)
Essayez ceci
Cela fonctionne mais je voulais savoir s'il y avait un moyen plus simple que de supprimer complètement le bloc de son parent. Merci pour la réponse cependant!
En HTML, la raison pour laquelle une balise de paragraphe, même lorsque vide, prend de l'espace est parce qu'il s'agit d'un élément de niveau de bloc, et donc il haslayout . Cela signifie qu'il a des propriétés telles que le rembourrage et la hauteur de ligne qui lui est attribuée par l'agent de rendu, ainsi que il provoquera une pause de ligne forte>. Pouvez-vous trouver un moyen de détecter si un paragraphe sera être vide et changer sa règle d'affichage? Visibilité ne supprime pas d'élément, ne le rend invisible que si la balise de paragraphe provoquera toujours la pause de la ligne Pesky. En fait, cette solution de hauteur de ligne postée plus tôt quitte toujours la pause de la ligne. ( Un article sur l'affichage VS Visibilité. ) P> La règle CSS Vous pouvez également inclure Affichage: Aucun; code> peut être utilisé pour le supprimer du flux de page (voir le lien HasLayout ci-dessus). J'aime utiliser une classe CSS et appliquer cela par programme. Quelque chose comme ça fait généralement le truc: p>
la hauteur de ligne: 0; code> dans cette classe pour couvrir la suggestion précédente. < / p> p>
Cela fait de bon sens, mais comment l'atteindra-t-on sur une application WPF?
Y a-t-il une raison pour laquelle vous êtes codant dur 4 paragraphes lors de votre question, ils pourraient être blancs? Un utilisateur ne serait pas en mesure d'ajouter quoi que ce soit au paragraphe si elle a été écrasée de toute façon, si cela devrait même être là? Si les paragraphes affichent uniquement des informations de quelque part d'ailleurs, il est-il préférable d'ajouter les paragraphes au besoin?
En effet je pensais la même chose. Pourquoi ne pas filtrer les paragraphes vides au niveau du modèle?
Ma question est une version simplifiée de mon problème. Le paragraphe ne contient pas exactement rien, ils ont plusieurs conteneurs. Mais je peux gérer cette partie de la question, tout ce dont j'ai besoin, c'est savoir comment cacher complètement un paragraphe, car il n'a aucune propriété "visibilité".
Vous pouvez masquer le paragraphe en le supprimant de son parent. Cependant, vous pouvez toujours le garder en mémoire