我正在 LocalizedResources
中绑定(bind)文本(适用于各种语言),并且我需要在该文本中包含链接。不幸的是,当我像这样绑定(bind)它时,我无法在其中包含链接:
<TextBlock TextWrapping="Wrap" Text="{Binding Path=LocalizedResources.AboutText, Source={StaticResource LocalizedStrings}}"/>
所以我基本上想在该文本链接 block 中制作一些单词。这可能吗?
编辑:我需要这样的东西
除非我按照我所说的从 LocalizedResources
绑定(bind)此文本
最佳答案
如Romasz建议,您应该使用 RichTextBox 而不是 TextBlock。您可以使用以下代码解决那里的绑定(bind):
<RichTextBox>
<Paragraph>
<Run Text="{Binding Path=LineFormatted}" />
</Paragraph>
</RichTextBox>
对于超链接,您可以使用 C# 浏览整个文本,然后将链接与文本分开(您可以使用类似 --- 的内容,并且您知道每当文本中出现 --- 时,您就拥有了超链接)。
获得文本和超链接后,可以使用以下代码将它们添加到 RichTextBox:
Run myRun = new Run();
myRun.Text = "Displaying text with ";
Hyperlink link = new Hyperlink();
link.Inlines.Add("hyperlink");
link.NavigateUri = new Uri("https://stackoverflow.com/");
link.TargetName = "_blank";
link.Foreground = new SolidColorBrush(Colors.Blue);
Paragraph myParagraph = new Paragraph();
myParagraph.Inlines.Add(myRun);
myParagraph.Inlines.Add(link);
myRun = new Run();
myRun.Text = " and with some text after the link.";
myParagraph.Inlines.Add(myRun);
rtb.Blocks.Add(myParagraph);
其中 rtb 是我的 RichTextBox 的名称。
关于c# - 在绑定(bind)中包含链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25192454/