2010-08-22 4 views
2

Je me demandais s'il était possible de le faire, soit dans WPF:texte appuyant sur/au-dessus de la ligne dans WPF

Text on line, text on top of line

Je pense que le principal problème ici que je ne peux pas intégrer un TextBlock dans une ligne en XAML, ce que j'ai l'habitude de faire. Est-ce que quelqu'un a une idée de la façon dont je peux résoudre ce problème?

EDIT: Il devrait également manipuler le texte diagonal.

Répondre

4

Vous pouvez le faire, c'est en fait assez facile. Vous devez garder à l'esprit que vous pouvez le contenu du nid dans une balise <TextBlock> ....

<TextBlock> 
    <Line X1="0" Y1="0" X2="100" Y2="0" Stroke="Black" StrokeThickness="4"/> 
    <TextBlock Text="Hello there!" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <Line X1="0" Y1="0" X2="100" Y2="0" Stroke="Black" StrokeThickness="4"/> 
</TextBlock> 
+0

Merci! Cela a fonctionné parfaitement! Je vais travailler à rendre ceci plus dynamique (IE- la ligne est toujours de la même longueur même s'il y a plus de texte) mais c'est un bon point de départ! – DMan

+1

heureux d'aider, je voudrais faire un contrôle de l'utilisateur ou un contrôle personnalisé ou quelque chose de sorte que vous pouvez le rendre plus facile à personnaliser et obtenir l'effet exact que vous voulez –

+0

Merci pour la suggestion. – DMan

1

Pourriez-vous avoir une grille à trois colonnes, avec une ligne dans la première et la troisième colonne et le texte dans la seconde? Bien sûr, vous devez définir les propriétés de la ligne gauche et droite afin qu'elles s'étendent sur toute la largeur.

+0

J'ai édité mon post parce que vous venez de me rappeler quelque chose, les lignes devraient être aussi en diagonale. Je ne pense pas que votre méthode fonctionnerait dans ce cas, bien que ce soit une très, très bonne idée à laquelle je n'ai jamais pensé. – DMan

0

J'ajoute cette réponse parce que je trouve la réponse acceptée et d'autres réponses ne répondaient pas aux premier exemple, de longueur variable lignes horizontales des deux côtés de Bonjour. Voici comment faire ...

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <Separator Grid.Column="0" Margin="5"/> 
    <TextBlock Text="Hello" Grid.Column="1"/> 
    <Separator Grid.Column="2" Margin="5"/> 
</Grid> 
Questions connexes