我在我的Xamarin表单应用程序中使用Prism,我有一个_
,其中每个Listitem有2个图像,一个编辑图像和删除图像。
我在这2张图片上使用了ListView
,并为这些TapGesturesRecognizers
绑定了DelegateCommands
。但是这些DelegateCommands不会被调用。
提前致谢
这是我的XAML代码
TapGestureRecognizers
在我的ViewModel中:
<ListView x:Name="lstAddress" HasUnevenRows="True" SeparatorVisibility="None" ItemsSource="{Binding ListItems}" CachingStrategy="RecycleElement" >
<ListView.Behaviors>
<b:EventToCommandBehavior EventName="ItemTapped"
Command="{Binding ListItemSelectCommand}" EventArgsParameterPath="Item"/>
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Description}" FontSize="15" TextColor="#959595">
</Label>
<Image Source="Edit.png" HeightRequest="50" WidthRequest="50" IsVisible="{Binding ShowEdit}">
<Image.GestureRecognizers>
<TapGestureRecognizer Command ="{Binding EditAddressCommand}"></TapGestureRecognizer>
</Image.GestureRecognizers>
</Image>
<Image Source="Delete.png" ClassId="{Binding ListID}" HeightRequest="30" WidthRequest="30" IsVisible="{Binding ShowIcon}">
<Image.GestureRecognizers>
<TapGestureRecognizer Command ="{Binding DeleteAddressCommand}"></TapGestureRecognizer>
</Image.GestureRecognizers>
</Image>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 0 :(得分:5)
对于列表中的每个项目,您的BindingContext
与ListView
的{{1}}不同。在本地,您的BindingContext
是项目本身,这就是您可以获取“描述”属性的原因。 BindingContext
正在您的商品中搜索名为Xamarin
的{{1}},而不是您的视图模型。
如果需要,您可以制作一个Cross Binding引用...只需将项目模板中的命令替换为这样:
ICommand
它可能有用。