【发布时间】:2017-09-12 09:34:46
【问题描述】:
我们如何打开绑定到图片的 URL(通过 TapGestureRecognizer)?
我的 ListView 的 ItemsSource 是 _partners(List 的类型)。
Partner 类有两个属性 - WebUrl 和 ImageUrl。
<ListView x:Name="partnersListView">
<ListView.ItemTemplate>
<DataTemplate>
<!--<ImageCell ImageSource="{Binding ImageUrl}" Text="{Binding WebUrl}" />-->
<ViewCell>
<Image Source="{Binding ImageUrl}">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="Image_TapGestureRecognizer_Tapped" NumberOfTapsRequired="1" CommandParameter="{Binding .}" />
</Image.GestureRecognizers>
</Image>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
列表仅显示图像,我希望应用在用户点击图像时导航到网站。但是,以下代码 - 不出所料 - 不起作用。
private void Image_TapGestureRecognizer_Tapped(object sender, System.EventArgs e)
{
var tappedMenuItem = sender as MenuItem;
var partner = tappedMenuItem.CommandParameter as Partner;
Device.OpenUri(new Uri(partner.WebUrl));
}
有什么建议吗?
请注意:
我想将 TapGestureRecognizer 保留在 XAML 中 - 而不是在代码隐藏中。
谢谢。
【问题讨论】:
-
是否有任何理由将其保留在 UI 页面上?您不能将列表视图的 Item Selected 属性绑定到您的 ViewModel 上的道具并对其做出反应以触发 OpenURI?
-
我没有 ViewModel 页面 - 每个页面上的所有内容都是通过代码隐藏设置的。我是初学者,所以这是我的第一步,所以请放轻松:)
-
好的,但没有区别......您也可以将 SelectedItem 绑定到您的 View 代码后面的属性。与您对图像源使用绑定的方式相同。
-
@Depechie 能否请您详细说明一下,给我看确切的代码并将其变成答案,以便我接受?漂亮吗?
-
尝试创建UriBuilder,可能是uri格式不对这里是code-var uri = new UriBuilder(CategoryObject.Website).Uri; Device.OpenUri(uri);
标签: xamarin xamarin.ios xamarin.forms xamarin.android