gpt4 book ai didi

c# - Windows Phone 中 richtextbox 的使用

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:52 24 4
gpt4 key购买 nike

我正在使用 richtextbox 在 Windows Phone 7.1 中显示一些 Html 内容。

html 源代码如下:

Paragraph1</p>
<img src="http://www.ifanr.com/wp-content/uploads/2011/11/DSC_332401.jpg" alt="" width="600" height="338" /></p>
Paragraph2。</p>
<h3>Title h3</h3>
Paragraph3。
</p>

然后我用

"string[] sArray = Regex.Split(html, "</p>", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);"

将它们拆分成一个数组。最后,我使用代码:

foreach (string array in sArray)
{
Paragraph parag = new Paragraph();
Run run = new Run();
Bold bold = new Bold();
if (!Regex.IsMatch(array.ToString(), @"<img\b[^<>]*?\bsrc\s*=\s*[""']?\s*(?<imgUrl>[^\s""'<>]*)[^<>]*?/?\s*>"))
{
//h3
if (array.ToString().Contains("</h3>"))
{
string hString = array.ToString();
hString = Regex.Replace(hString, "<h3>", "");
string[] hArray = Regex.Split(hString, "</h3>", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
bold.Inlines.Add(hArray[0].ToString());
parag.Inlines.Add(bold);
run.Text = hArray[1].ToString();
parag.Inlines.Add(run);
}
else
{
if(array.ToString().Contains("<blockquote>"))
{
run.Text = Regex.Replace(array.ToString(), "<blockquote>", "blockquote:");
run.FontSize = 18;
}
else
run.Text = array.ToString();
parag.Inlines.Add(run);
}
rtb.Blocks.Add(parag);
}
else
{
//insert the image into richtextbox
Regex regImg = new Regex(@"http://[^\[^>]*?(gif|jpg|png|jpeg|bmp|bmp)", RegexOptions.IgnoreCase);
MatchCollection matches = regImg.Matches(array.ToString());
string result = null;
foreach (Match match in matches)
result = match.Value;

Image image = new Image();

image.Stretch = Stretch.Uniform;
image.Source = new BitmapImage(new Uri(result, UriKind.RelativeOrAbsolute));
InlineUIContainer iuc = new InlineUIContainer();
iuc.Child = image;
parag.Inlines.Add(iuc);
rtb.Blocks.Add(parag);
}

将一些段落或图像添加到 richtextbox 中,一开始一切顺利,但是当我向下滚动 richtextbox 时,其余段落消失了。这让我一整天都很困惑,因为我找不到 richtextbox 有什么问题。这只是 Windows Phone 中的一个错误吗?有什么想法吗?

截图1:

screenshot 1

截图2:

Screenshot 2

p.s:html源代码中是否包含非英文字符并不重要。当 html 源代码包含大量单词时,就会发生这种情况。这两个屏幕截图正好说明了问题。

最佳答案

手机应用了一个限制,即任何 UIElement 在任何方向上都不能大于 2048 像素。这是为了避免与内存相关的性能问题以及必须绘制非常大的对象而强制执行的。这是为了防止你做一些对性能有很大影响但背后还有其他原因的事情。例如,电话是阅读大段文本的糟糕设备。这更适用于密集的文本。因此,这种大小限制迫使您考虑如何或是否应该在您的应用程序中显示大段文本。

虽然有一些解决方案。
与其使用单个 ParagrpahTextBlock 来处理大“单元”的文本,不如考虑使用这样的方式:http://blogs.msdn.com/b/priozersk/archive/2010/09/08/creating-scrollable-textblock-for-wp7.aspx

关于c# - Windows Phone 中 richtextbox 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8211881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com