Bağlantı kutusunda bir metin kutusu var. Metin içerisindeki metinler çalışma sırasında oluşturulur. Sorun şu ki, metin içindeki bağlantılar tıklanabilir değil, nasıl yapılabilir? metin bloğu içindeki tüm linkler tıklanabilir, böylece bir linke dokunduğumda web tarayıcısını açmalı. Android'de autolink.Is kullanarak bunu ayarlayabiliriz wp7 veya wp7.1 mango'da bu seçenek kullanılabilir mi?Wp7'de bir metin bloğunda tıklanabilir bağlantılar nasıl ayarlanır
cevap
HyperLink kullanın.
<TextBlock>
<Run>Pure Text</Run>
<Hyperlink Command="{Binding HyperLinkTapped}">http://google.com</Hyperlink>
<Run>Pure Text Again</Run>
</TextBlock>
Bu Windows Phone 7.1 (Mango) desteklenmektedir.
Gerekirse, çalışma zamanında kendi FlowDocument dosyanızı verilerinizde oluşturabilirsiniz. bir dizeden bir FlowDocument oluşturmak için nasıl
Örnek: silverlight RichTextBox contol olarak
private void OnMessageReceived(string message)
{
var textBlock = new RichTextBox()
{
TextWrapping = TextWrapping.Wrap,
IsReadOnly = true,
};
var paragraph = new Paragraph();
var runs = new List<Inline>();
foreach (var word in message.Split(' '))
{
Uri uri;
if (Uri.TryCreate(word, UriKind.Absolute, out uri) ||
(word.StartsWith("www.") && Uri.TryCreate("http://" + word, UriKind.Absolute, out uri)))
{
var link = new Hyperlink();
link.Inlines.Add(new Run() { Text = word });
link.Click += (sender, e) =>
{
var hyperLink = (sender as Hyperlink);
new WebBrowserTask() { Uri = uri }.Show();
};
runs.Add(link);
}
else
{
runs.Add(new Run() { Text = word });
}
runs.Add(new Run() { Text = " "});
}
foreach (var run in runs)
paragraph.Inlines.Add(run);
textBlock.Blocks.Add(paragraph);
MessagesListBox.Children.Add(textBlock);
MessagesListBox.UpdateLayout();
}
Bunu yapmak için yerleşik bir işlev yok.
Metniniz (bağlantılar dahil) HTML ise, WebBrowser denetiminde görüntüleyebilirsiniz.
Değilse metni ayrıştırmanız ve bağlantıları kendiniz oluşturmanız gerekir. (Bir WrapPanel'in içindeki TextBlocks ve HyperlinkButtons kombinasyonu, bunun için muhtemelen yoldur.)
HyperlinkButton artık kullanmak için bir neden yok ;-) –
size yardımcı olabilir.
<RichTextBox>
<Paragraph>
<Run Text="This have to navigate me to Google: "/>
<Hyperlink NavigateUri="http://google.com" TargetName="_blank">google.com</Hyperlink>
</Paragraph>
</RichTextBox>
Mükemmel - Teşekkürler! –
Tam bir örnekle güncelleştirildi. –
7.1 kullanıyorum ve bu xaml benim için bile derleme değil. – Nathan
İlk önce "Köprü", "küçük harf" olmalıdır. İkinci olarak, bir 7.1 projesinde derlemek için xaml kodunu alamıyorum ... –