Как установить ссылки в текстовом блоке, кликабельном в wp7 - PullRequest
6 голосов
/ 27 сентября 2011

У меня есть текстовое поле, содержащее ссылки. Содержимое в тексте создается во время выполнения. Моя проблема в том, что ссылки внутри текста не активируются, как сделать все ссылки внутри текстового блока интерактивными, чтобы при нажатии Ссылка должна открывать веб-браузер. В Android мы можем установить его с помощью autolink. Есть ли такая опция в wp7 или в wp7.1 mango?

Ответы [ 3 ]

12 голосов
/ 27 сентября 2011

Используйте HyperLink .

<TextBlock>
    <Run>Pure Text</Run>
    <Hyperlink Command="{Binding HyperLinkTapped}">http://google.com</Hyperlink>
    <Run>Pure Text Again</Run>
</TextBlock>

Это поддерживается с Windows Phone 7.1 (Mango).

Вы можете создать свой собственный FlowDocument из ваших данных,во время выполнения, если необходимо.

Пример того, как сгенерировать FlowDocument из строки:

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();
}
2 голосов
/ 05 сентября 2013

В серебряном свете RichTextBox contol может помочь вам.

<RichTextBox>
    <Paragraph>
        <Run Text="This have to navigate me to Google: "/>
        <Hyperlink NavigateUri="http://google.com" TargetName="_blank">google.com</Hyperlink>
    </Paragraph>
</RichTextBox>
2 голосов
/ 27 сентября 2011

Для этого нет встроенной функциональности.

Если ваш текст (включая ссылки) является HTML, вы можете отобразить его в элементе управления WebBrowser.
Если нет, вам нужно будет проанализироватьтекст и строить ссылки самостоятельно.(Сочетание TextBlocks и HyperlinkButtons внутри WrapPanel, вероятно, является подходящим способом для этого.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...