WPF кликабельные ссылки в тексте - PullRequest
0 голосов
/ 28 мая 2018

У меня есть текстовое поле, в котором отображаются некоторые сообщения ...

        <TextBox VerticalAlignment="Center"
          HorizontalAlignment="Left"
          TextWrapping="Wrap"
          FontFamily="{StaticResource LatoRegular}"
          Foreground="Black"
          FontSize="{StaticResource FontSizeRegular}"
          Text="{Binding Message}"
           Background="Transparent"
           BorderThickness="0"
           Padding="0"
           Margin="0"
           IsReadOnly="True"
                                       />

Если бы пользователь отправил ссылку в сообщении, я хотел бы иметь возможность обнаружить ее, щелкнуть ее и открыть страницу набраузер.

Моя ситуация: мое сообщение может содержать другие тексты или даже более 1 ссылки.Например, "Привет, пожалуйста, посетите google.com для получения дополнительной информации".я бы хотел, чтобы google.com распознавался как ссылка и был активным для клика.

У кого-нибудь есть идеи, как мне это сделать?

Или, кроме текстового поля, что еще я могу использовать .. Мне нужно, чтобы он скрывал сообщение за

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете использовать TextBlock вместо TextBox следующим образом:

<TextBlock>
        <Hyperlink NavigateUri="{Binding Message}" RequestNavigate="Hyperlink_RequestNavigate">
            <TextBlock Text="{Binding Message}"/>
        </Hyperlink>
</TextBlock>

Hyperlink_RequestNavigate: будет вашим обработчиком событий, в котором вы будете открывать браузер через Process.Start

private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
    Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
    e.Handled = true;
}

Это будет базовая реализация для вашего требования, когда вы не знаете, отправит ли пользователь ссылку или какой-либо текст -

  1. Имеют два элемента управления в одном месте:

    а.Один простой текстовый блок для отображения текста, который не является гиперссылкой.

    b.Один текстовый блок гиперссылки, показанный выше.

  2. Создание флага для видимости для каждого из элементов управления, проверка сообщения при отправке пользователем и установка флага на основе того, является ли сообщение ссылкойили просто обычный текст.

или

Вы также можете определить шаблон данных для текстового блока, который изменится на гиперссылку или обычный текстовый блок на основе некоторого флагакоторые необходимо установить после проверки того, какое сообщение отправил пользователь, будь то гиперссылка или просто текст.

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