文本块的内容是从Web服务导入的,但不知何故有一个URL。
是否可以将其作为链接?
感谢。
答案 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并将其绑定到变量。它还将数据上下文设置为页面本身。