Xaml 如何使用MVVM在xamarin listview中添加多个命令按钮?
我正在尝试创建一个listview,用户可以在其中选择要查看商店的列表项,还可以单击图像将他们带到产品详细信息。 如何在ViewCell中添加命令Xaml 如何使用MVVM在xamarin listview中添加多个命令按钮?,xaml,listview,xamarin,Xaml,Listview,Xamarin,我正在尝试创建一个listview,用户可以在其中选择要查看商店的列表项,还可以单击图像将他们带到产品详细信息。 如何在ViewCell中添加命令 <ListView ItemsSource="{Binding myData}" x:Name="myListView" SelectedItem="{Binding SelectedStore}" > <ListView.ItemTemplate> <DataTemplate>
<ListView ItemsSource="{Binding myData}" x:Name="myListView" SelectedItem="{Binding SelectedStore}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Label Text="{Binding Title}" />
<Image Source="product.png" >
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding ItemTapCommand}" CommandParameter="Id" />
</Image.GestureRecognizers>
</Image>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
问题是您正试图绑定到一个命令,该命令不位于ListView中的单个项上;图像上的BindingContext是myData集合中的单个项 对于其他框架,例如Wpf,您只需使用绑定的RelativeSource部分来告诉控件在另一个控件的BindingContext上查找您的命令,但是在Xamarin表单中这是不可能的RelativeSource不受支持 您可以执行以下操作,但它要求您的UserControl具有x:Name: 这意味着使用UserControl作为绑定的源,并且该属性是由BindingContext.ItemTapCommand组成的UserControl上的嵌套属性
作为奖励,我更新了代码,因为我觉得您可能想将每条记录的Id属性的值绑定为命令参数,而不仅仅是将字符串Id作为命令参数发送。我不清楚UserControl。这段代码在xaml页面中,我没有将其用作嵌入xaml页面的用户控件。这就是你的意思吗?如果不是,MyUserControl将是什么?@wil:xaml图中具有正确BindingContext的更高级别的任何内容。我假设它是一个用户控件,但它也可以是一个页面或其他更高层次的东西。见鬼,你甚至可以使用ListView,因为它已经有了一个名字myListView。这就是我想的。多谢。今晚我要试试这个。
public ICommand ItemTapCommand => new Command(ShowSelectedProductAsync());
private async Task ShowSelectedProductAsync()
{
//take them to view the item detail
}
<TapGestureRecognizer Command="{Bindind Path=BindingContext.ItemTapCommand,
Source={x:Reference MyUserControl}}"
CommandParameter="{Binding Id}" />