如何使textblock中的URL可以点击?

时间:2009-10-27 03:28:24

标签: silverlight

文本块的内容是从Web服务导入的,但不知何故有一个URL。

是否可以将其作为链接?

感谢。

2 个答案:

答案 0 :(得分:3)

听起来像你想要a LinkLabel control。我已经在我的Silverlight Twitter Badge中对该控件进行了一些修改,以混合显示在推文中的文字和链接。

如果你只有一个只有链接的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));
}

答案 1 :(得分:0)

您可以执行以下操作;但这会使用Label而不是文本块。

在您的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>

并在您的代码中添加以下依赖项属性并将datacontext设置为页面本身

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并将其绑定到变量。它还将数据上下文设置为页面本身。