WP&Win10开发: RichTextBlock实现富文本并处理换行(源码分享)

Cle****-he UID.1073626
2015-09-01 发表

本帖最后由 Clever-he 于 2015-9-1 14:45 编辑

思路
1.构建字典。
2.在字符串中匹配字典的key,将匹配到的key转换成对应的value
3.将替换后的字符串,转化成xaml形式,加载该xaml以实现富文本。

代码如下
[mw_shl_code=csharp,true]private Paragraph getRichText(string richText)
{
var r = new Regex(builder.ToString()); //获取正则。
var mc = r.Matches(richText); //匹配富文本,获取匹配到的集合。
foreach (Match m in mc) //遍历集合将richText中所有的值转换成xaml的形式。
{
//string.Format 中的内容不要出现换行符,否则会出现换行出错。
richText = richText.Replace(m.Value, string.Format(@"<InlineUIContainer><Border><Image Source=""ms-appx:///Assets/Emoji/{0}.png"" Width=""30"" Height=""30""/></Border></InlineUIContainer>", emojiDict[m.Value]));
}
richText = richText.Replace("\r\n", "<LineBreak/>"); //将换行符转换成<LineBreak/>,用于实现换行。

//生成xaml
var xaml = string.Format(@"<Paragraph
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
<Paragraph.Inlines>
<Run></Run>
{0}
</Paragraph.Inlines>
</Paragraph>", richText);
var p = (Paragraph)XamlReader.Load(xaml);
p.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
return p;
}[/mw_shl_code]


Demo分享链接
:***链接停止解析***

运行图如下

***附件停止解析*** 有问题请加群:53078485


敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
wucd UID.573665
2015-09-01 回复

xaml这东东还是蛮复杂的。

2015-09-01 回复

说实话,看见弱类型就头疼,还得去猜是什么类型

Cle****-he UID.1073626
2015-09-01 回复

Quote***链接停止解析***
xaml这东东还是蛮复杂的。


可以进群交流下

wucd UID.573665
2015-09-01 回复

Quote***链接停止解析***
可以进群交流下


进了几个UWP群,学习中。。。

Cle****-he UID.1073626
2015-09-01 回复

Quote***链接停止解析***
进了几个UWP群,学习中。。。


不错{:6_233:}

拾穗行歌 UID.1081464
2015-09-01 回复

Quote***链接停止解析***
进了几个UWP群,学习中。。。


能不能提供一下群号啊少年,有没有比较照顾新手的

k****o UID.1171487
2015-09-23 回复

内容已屏蔽

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报