绑定 NavigateUri 属性 of HyperlinkButton Windows Phone 8
Bind NavigateUri property of HyperlinkButton Windows Phone 8
我正在使用 Newtonsoft.NET 为我的 C#/XAML 中的 WP8 应用程序解析一些 JSON 数据,除了将 NavigationUri 绑定到 HyperlinkButton 之外,一切正常。这是我的数据绑定 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>
这样一切都正确加载,但 HyperLinkButton 不会导航到 Uri。
我应该怎么做才能确保导航正常工作?
如果 HyperLinkButton 无法实现,那么我可以添加一个常规按钮,我可以向其传递 url 以便 OnClick 事件可以导航到 url.
这是因为您没有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 作为 url)
假设 url 是正确的,可以像这样激活网络浏览器:
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();
}
我正在使用 Newtonsoft.NET 为我的 C#/XAML 中的 WP8 应用程序解析一些 JSON 数据,除了将 NavigationUri 绑定到 HyperlinkButton 之外,一切正常。这是我的数据绑定 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>
这样一切都正确加载,但 HyperLinkButton 不会导航到 Uri。
我应该怎么做才能确保导航正常工作? 如果 HyperLinkButton 无法实现,那么我可以添加一个常规按钮,我可以向其传递 url 以便 OnClick 事件可以导航到 url.
这是因为您没有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 作为 url)
假设 url 是正确的,可以像这样激活网络浏览器:
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();
}