Как сделать так, чтобы URL в текстовом блоке был кликабельным? - PullRequest
1 голос
/ 27 октября 2009

Содержимое текстового блока импортируется из веб-службы, но каким-то образом есть URL.

Можно ли сделать ссылку?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Звучит так, как вы хотите элемент управления LinkLabel . Я использовал этот элемент управления с некоторыми изменениями в своем значке Twitter Silverlight , чтобы смешивать текст и ссылки, отображаемые в твитах.

Если у вас есть только TextBlock только со ссылкой и вы хотите, чтобы он был кликабельным, тогда вы просто устанавливаете курсор как руку и добавляете обработчик события для события MouseLeftButtonDown, который будет перемещаться к значению TextBox.

Xaml:

<TextBlock Text="http://www.microsoft.com" Cursor="Hand" TextDecorations="Underline" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" />

Код:

private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var txt = ((TextBlock)sender).Text;
    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(txt, UriKind.Absolute));
}
0 голосов
/ 27 октября 2009

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

В вашем XAML вы делаете следующее:

<dataInput:Label Grid.Row="2">
                <ContentPresenter>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Hello world"/>
                        <HyperlinkButton x:Name="Test" NavigateUri="{Binding Path=URI}" Content="This is a url"/>
                    </StackPanel>
                </ContentPresenter>
            </dataInput:Label>

и в своем коде вы добавляете следующее свойство зависимостей и устанавливаете текстовый текст для самой страницы

public static readonly DependencyProperty URLProperty =
            DependencyProperty.Register("URI", typeof(Uri), typeof(MainPage), null);

        public Uri URI { get
            {
                return (Uri)GetValue(URLProperty);
            }
            set
            { SetValue(URLProperty, value); }
        }

Этот код устанавливает свойство зависимости для привязки к URL;

public MainPage()
        {
            InitializeComponent();
            URI = new Uri("/Home", UriKind.Relative);
            DataContext = this;
        }

Этот код создает новый URI и связывает его с переменной. Он также устанавливает контекст данных для самой страницы.

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