首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定Windows 8的NavigateUri属性

绑定Windows 8的NavigateUri属性
EN

Stack Overflow用户
提问于 2015-01-30 11:30:03
回答 2查看 905关注 0票数 0

我正在C#/XAML中使用Newtonsoft.NET为我的WP8应用程序解析一些JSON数据,除了NavigationUri到HyperlinkButton的绑定之外,一切都很好。以下是我的数据库DataTemplate LongListSelector:

代码语言:javascript
复制
<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>

这样就可以正确地加载所有内容,但是HyperLinkButton不会导航到Uri。

我该怎么做才能确保导航正常工作?如果不能使用HyperLinkButton,那么我可以添加一个常规按钮来传递url,以便OnClick事件可以导航到url。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-30 11:40:56

假设url是正确的,则可以像这样激活url浏览器:

XAML

代码语言:javascript
复制
<HyperlinkButton NavigateUri="{Binding ImdbLink}" 
                 Click="NavigateButton_Click">View on IMDB</HyperlinkButton> 

C#

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2015-01-30 11:40:02

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

代码语言:javascript
复制
<HyperlinkButton NavigateUri="{Binding ImdbLink}" RequestNavigate="Hyperlink_RequestNavigate">View on IMDB</HyperlinkButton>

并在您的代码后面为视图

代码语言:javascript
复制
    private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
    {
        Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
        e.Handled = true;
    }

或者您想要处理该单击事件(即打开一个新的new视图,并将其作为url)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28234953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档