绑定HyperlinkBut​​ton Windows Phone 8的NavigateUri属性

时间:2015-01-30 11:30:03

标签: c# xaml windows-phone-8 data-binding

我正在使用Newtonsoft.NET为C#/ XAML中的WP8应用程序解析一些JSON数据,除了将NavigationUri绑定到HyperlinkBut​​ton之外,一切正常。这是我的数据绑定LongListSelector的DataTemplate:

<DataTemplate>
<StackPanel Margin="10 10 10 20" Background="{StaticResource PhoneAccentBrush}">
<TextBlock Text="{Binding MovieTitle }" TextWrapping="Wrap" FontSize="18" />
<TextBlock Text="{Binding ImdbCode }" TextWrapping="Wrap" FontSize="18" />
<HyperlinkButton NavigateUri="{Binding ImdbLink}">View on IMDB</HyperlinkButton>
<Image Source="{Binding MovieCover}" Width="300" Height="300" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding ImdbLink}" TextWrapping="Wrap" FontSize="18" />
</StackPanel>
</DataTemplate>

这样一切都正确加载,但HyperLinkBut​​ton没有导航到Uri。

我应该怎么做以确保导航有效? 如果使用HyperLinkBut​​ton是不可能的,那么我可以添加一个常规按钮,我可以传递该URL,以便OnClick事件可以导航到url。

2 个答案:

答案 0 :(得分:0)

这是因为您没有RequestNavigate方法。尝试:

<HyperlinkButton NavigateUri="{Binding ImdbLink}" RequestNavigate="Hyperlink_RequestNavigate">View on IMDB</HyperlinkButton>

并在您的代码后面放置视图

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

或者你想要处理那个点击事件(即用它作为网址打开一个新的webview)

答案 1 :(得分:0)

假设网址正确,可以像这样激活网页浏览器:

XAML

<HyperlinkButton NavigateUri="{Binding ImdbLink}" 
                 Click="NavigateButton_Click">View on IMDB</HyperlinkButton> 

C#

private void NavigateButton_Click(object sender, RoutedEventArgs e)
{
    var hyperlinkButton = sender as HyperlinkButton;
    if(hyperlinkButton == null)
    {
        return;
    }

    ShowInBrowser(hyperlinkButton.NavigateUri);
}

private void ShowInBrowser(Uri url)
{
    Microsoft.Phone.Tasks.WebBrowserTask wbt = 
        new Microsoft.Phone.Tasks.WebBrowserTask();
    wbt.Uri = url;
    wbt.Show();
}