C# WPF Textblock different font color per line

匿名 (未验证) 提交于 2019-12-03 01:34:02

问题:

I am trying to make each line of text on a WPF textblock display in a different color. I have the following code which makes the entire block's font color purple because that's the last color it's set to. How can I make it so each potion is displayed in a different color?

    private void btnShowPotions_Click(object sender, RoutedEventArgs e) {          tbPotionInfo.Foreground = Brushes.Green;         tbPotionInfo.Text = smallPotion.Name + "(" + smallPotion.AffectValue + ")\r\n";         tbPotionInfo.Foreground = Brushes.Blue;         tbPotionInfo.Text += mediumPotion.Name + "(" + mediumPotion.AffectValue + ")\r\n";         tbPotionInfo.Foreground = Brushes.Red;         tbPotionInfo.Text += largePotion.Name + "(" + largePotion.AffectValue + ")\r\n";         tbPotionInfo.Foreground = Brushes.Purple;         tbPotionInfo.Text += extremePotion.Name + "(" + extremePotion.AffectValue + ")\r\n";     } 

回答1:

You can make use of Run.

Here is the sample of how to use the Run

Run run = new Run(smallPotion.Name + "(" + smallPotion.AffectValue + ")\r\n"); run.Foreground = Brushes.Green; tbPotionInfo.Inlines.Add(run);     run = new Run(mediumPotion.Name + "(" + mediumPotion.AffectValue + ")\r\n"); run.Foreground = Brushes.Blue; tbPotionInfo.Inlines.Add(run);         ... 

Haven't verified but I hope it will help you.



回答2:

Use textblock like this

<TextBlock>       <TextBlock Name="tbSmallPotion" Foreground="Green"/       <TextBlock Text="tbMediumPotion"Foreground="Blue"/>  </TextBlock> 

and set the values

tbSmallPotion.Text = smallPotion.Name + "(" + smallPotion.AffectValue + ")\r\n"; tbMediumPotion.Text = mediumPotion.Name + "(" + mediumPotion.AffectValue + ")\r\n"; 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!