Exemple #1
0
        public static List <Block> GetContent(string txt)
        {
            txt = txt.Replace("<div", "<p").Replace("</div>", "</p>");
            var list = new List <Block>();

            var regEx = new Regex(
                @"(\<p.*?\>)(?<text>.*?)(\<\/p\>|$)",
                RegexOptions.IgnoreCase | RegexOptions.Singleline);

            foreach (Match match in regEx.Matches(txt))
            {
                var item = match.Groups["text"].Value.Trim();
                if (item.Contains("<img"))
                {
                    var paragraph = new Paragraph();
                    var regImg    = new Regex(
                        @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>",
                        RegexOptions.IgnoreCase);
                    foreach (Match matchImg in regImg.Matches(item))
                    {
                        var image = new Image();
                        image.Source              = new BitmapImage(new Uri(matchImg.Groups["imgUrl"].Value.Trim()));
                        image.Stretch             = Stretch.None;
                        image.HorizontalAlignment = HorizontalAlignment.Center;
                        image.Tapped             += async(sender, args) =>
                        {
                            ImgView cd = new ImgView();
                            cd.Source  = new BitmapImage(new Uri(matchImg.Groups["imgUrl"].Value));
                            cd.Tapped += (o, eventArgs) =>
                            {
                                cd.Hide();
                            };
                            cd.RightTapped += async(o, eventArgs) =>
                            {
                                await Launcher.LaunchUriAsync(new Uri(matchImg.Groups["imgUrl"].Value));
                            };
                            await cd.ShowAsync();
                        };
                        var container = new InlineUIContainer();
                        container.Child = image;
                        paragraph.Inlines.Add(container);
                    }
                    list.Add(paragraph);
                }
                else if (item.Contains("<span"))
                {
                    var paragraph = new Paragraph();
                    paragraph.Inlines.Add(new Run()
                    {
                        Text       = NoHTML(item),
                        Foreground = new SolidColorBrush(Color.FromArgb(255, 34, 34, 34)), FontSize = 16
                    });
                    paragraph.LineHeight = 26;
                    list.Add(paragraph);
                }
                else
                {
                    var paragraph = new Paragraph();
                    paragraph.Inlines.Add(new Run()
                    {
                        Text       = NoHTML(item),
                        Foreground = new SolidColorBrush(Color.FromArgb(255, 34, 34, 34)), FontSize = 16
                    });
                    paragraph.LineHeight = 26;
                    list.Add(paragraph);
                }
            }

            return(list);
        }