2017-06-23 6 views
1

Je veux ajouter des émoticônes à l'application de discussion WPF. Je sais que wpf ne supporte pas les émoticônes pour cette raison je remplace les émoticônes avec l'image. J'utilise la propriété inline de textBlock pour ajouter des images à textBlock, mais j'ai un problème avec l'alignement des images. Je ne suis pas capable de faire des images d'émoticônes pour être correctement alignées. Je partage une capture d'écran de la façon dont il regarde.Emoticones dans TextBlock dans l'application WPF

Screenshot of app window

This is how emoticon is looking

l'exemple est juste une démo où je suis d'ajouter des éléments que dans le constructeur pour voir à quoi il ressemblera. Je partage aussi mon code.

 @out.Inlines.Add(new Run("Hii, my name is Ajay!!")); 
     Image emo = new Image(); 
     emo.Height = 15; 
     emo.Width = 15; 
     emo.VerticalAlignment = VerticalAlignment.Bottom; 
     emo.Margin = new Thickness(3, 0, 0, 0); 
     emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute)); 
    // InlineUIContainer container = new InlineUIContainer(emo); 
     @out.Inlines.Add(emo); 

Est-il possible de faire en sorte que l'image de l'émoticône soit correctement alignée? Est-il correct d'utiliser textblock ou je devrais utiliser un autre contrôle pour cela?

Toute aide est fortement appréciée.

+0

Pourriez-vous s'il vous plaît préciser ce que vous entendez par correctement aligné? Voulez-vous que l'image apparaisse sur le côté droit? –

Répondre

1

Quelques options possibles peuvent être:

fixé la marge Top sur l'image. il est dans le format de gauche, vers le haut, droite, bas

emo.Margin = new Thickness(3, 4, 0, 0); 

Une autre option consiste à envelopper l'image dans une course et régler le BaselineAlignment. https://msdn.microsoft.com/en-us/library/system.windows.baselinealignment

var imageRun= new Run(emo); 
imageRun.BaselineAlignment = BaselineAlignment.TextBottom; //experiment with the other enum options 
@out.Inlines.Add(imageRun); 

ajuster le texte plutôt que l'image (même si je continuer à essayer avec l'image et l'utiliser comme un dernier recours).

var textRun = new Run("Hii, my name is Ajay!!"); 
textRun.Margin = experiment; 
textRun.BaselineAlignment = experiment; 
@out.Inlines.Add(textRun); 
+0

En fait, contructor of run ne prend pas UIElement comme paramètre mais, j'ai essayé de définir BaselineAlignment pour textRun et cela a bien fonctionné !! –

+0

Merci beaucoup !! :) –

1

J'ai essayé comme @Bill Tarbell suggéré et cela a fonctionné pour moi. Code de travail final est la suivante:

 var textRun = new Run("Hii, my name is Ajay!!"); 
     textRun.BaselineAlignment = BaselineAlignment.Center; 
     @out.Inlines.Add(textRun); 
     Image emo = new Image(); 
     emo.Height = 20; 
     emo.Width = 20; 
     emo.VerticalAlignment = VerticalAlignment.Bottom; 
     emo.Margin = new Thickness(3, 0, 0, 0); 
     emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute)); 
     // InlineUIContainer container = new InlineUIContainer(emo); 
     @out.Inlines.Add(emo)