C# 在wp8或超链接中选择FlowDocument,并在同一行上运行
我有一个超链接的文本。 为了不激怒读者,我想把普通文本和链接放在同一行。现在,每个内联元素都开始一个新行 它显示: 请访问 继续 我想: 请访问以继续 我还注意到,超链接命中区域覆盖了孔内联元素,而不仅仅是文本 我的问题与此处描述和解决的问题相同: 问题是,wp8的流程文档似乎并不存在。 我需要以编程方式创建内联元素 编辑1: 下面是我如何添加内联元素的代码:C# 在wp8或超链接中选择FlowDocument,并在同一行上运行,c#,xaml,windows-phone-8,hyperlink,richtextbox,C#,Xaml,Windows Phone 8,Hyperlink,Richtextbox,我有一个超链接的文本。 为了不激怒读者,我想把普通文本和链接放在同一行。现在,每个内联元素都开始一个新行 它显示: 请访问 继续 我想: 请访问以继续 我还注意到,超链接命中区域覆盖了孔内联元素,而不仅仅是文本 我的问题与此处描述和解决的问题相同: 问题是,wp8的流程文档似乎并不存在。 我需要以编程方式创建内联元素 编辑1: 下面是我如何添加内联元素的代码: int index = 0; rt = new Ri
int index = 0;
rt = new RichTextBox() { };
while (true)
{
Paragraph para = new Paragraph();
if (item.text.Substring(index).IndexOf("<") == 0)
{
//TRUE when link
//I extract the URL and the linktext, and also update the index
Hyperlink hyper = new Hyperlink();
hyper.Click += new RoutedEventHandler((sender,e) => Hyperlink_Click(sender,e,URL));
hyper.Inlines.Add(linktext);
para.Inlines.Add(hyper);
}
else if (item.text.Substring(index).Contains("<"))
{
//TRUE when text, item.text contains a link
// I extract the text and update index
Run run = new Run() { Text = text };
para.Inlines.Add(run);
}
else
{
//TRUE when only text is left
Run run = new Run() { Text = item.text.Substring(index) };
para.Inlines.Add(run);
rt.Blocks.Add(para);
break;
}
// REMOVE: rt.Blocks.Add(para);
}
rt.SetValue(Grid.RowProperty, MainViewer.RowDefinitions.Count - 1);
MainViewer.Children.Add(rt);
int索引=0;
rt=新的RichTextBox(){};
while(true)
{
段落段落=新段落();
if(item.text.Substring(index).IndexOf(“
这对我来说很好
PS
如果你想在你的应用程序中显示一些html,你可以使用HTMLTextBox或HTMLViewer from当你在代码中设置它时,它不应该添加新行…也许看看Bjorn Kuiper在这个项目中的TweetStatusConverter类做了类似的事情!我创建RichTextBox的模式与这个项目中的作者相同。我将发布我的很快就可以编写代码了,但现在我还有很多其他事情要做。谢谢你迄今为止的帮助。祝你应用程序好运!我的错误是我为每个内联对象添加了一个新段落。这帮助我发现了错误。我已经修复了代码。我不想使用纯html,因为我很难添加css(我遇到过这样的情况,一些样式没有显示,同时我的桌面浏览器显示了我打算做的事情)。我更喜欢提取标签。当然要多做一些工作,但少一些挫折感,因为我总是知道哪里会出问题。
Paragraph p = new Paragraph();
p.Inlines.Add("Plase visit ");
var link = new Hyperlink();
link.Inlines.Add("google.com ");
p.Inlines.Add(link);
p.Inlines.Add("to continue");
rtb.Blocks.Add(p);