使用带动态URL的WPF超链接控件

时间:2011-05-06 20:01:32

标签: wpf xaml dynamic hyperlink

免责声明:我是WPF的新手,所以我为这个愚蠢的问题道歉。

我有一个WPF表单,其中包含一个超链接标记,如果URL被硬编码到XAML中,它可以正常工作,如下所示:

    <TextBlock Margin="171,148,129,70">
        <Hyperlink NavigateUri="http://www.somesite.com" RequestNavigate="Hyperlink_RequestNavigate">
            <TextBlock Text="Open site in browser"  />
        </Hyperlink>
    </TextBlock>

后面的代码如下:

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

我想要做的是使此超链接的目标网址动态化。我添加了一个新窗口(作为对话框调用)以获取新链接,然后在其“true”返回时将其分配给主窗口类的私有成员。如何调整XAML标记/代码隐藏以始终使用类成员(我将在构造函数中设置为默认值)而不是将其硬编码到标记中?

提前致谢,对于noob问题感到抱歉。我必须使用错误的搜索字词。

2 个答案:

答案 0 :(得分:2)

您可以使用样式化的按钮看起来像超链接,并将CommandParameter绑定到您的网址。然后,您可以将Command设置为运行如下:

public void OpenWebsite(string url)
{ 
    Process.Start(url);
}

答案 1 :(得分:0)

只需更改超链接_requestNavigate方法即可使用该私有变量:

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