我有一个如下的列表视图(ListView):
<ListView
Grid.Row="0"
Margin="0"
x:Name="ItemsListView"
ItemsSource="{Binding SourceItems}"
VerticalOptions="FillAndExpand"
HasUnevenRows="false"
RefreshCommand="{Binding LoadItemsCommand}"
IsPullToRefreshEnabled="true"
IsRefreshing="{Binding IsBusy}"
ItemSelected="OnItemSelected"
IsVisible="{Binding ShowListView}"
RowHeight="55">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid
Margin="15,0,0,0"
Padding="0"
RowSpacing="0"
ColumnSpacing="0">
<Grid.RowDefinitions>
<RowDefinition
Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="1*" />
<ColumnDefinition
Width="7*" />
<ColumnDefinition
Width="1*" />
<ColumnDefinition
Width="1*" />
</Grid.ColumnDefinitions>
<Image
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand"
HeightRequest="35"
WidthRequest="35"
Grid.Row="0"
Grid.Column="0"
Aspect="AspectFit"
Source="{Binding Icon}">
</Image>
<StackLayout
VerticalOptions="CenterAndExpand"
Spacing="0"
CompressedLayout.IsHeadless="true"
Margin="15,0,0,0"
Grid.Row="0"
Grid.Column="1">
<Label
VerticalTextAlignment="Start"
Text="{Binding Name}"
FontAttributes="Bold"
LineBreakMode="NoWrap"
Style="{DynamicResource ListItemTextStyle}"
FontSize="16" />
<Label
VerticalTextAlignment="Start"
Text="{Binding Description}"
LineBreakMode="NoWrap"
Style="{DynamicResource ListItemDetailTextStyle}"
FontSize="13" />
</StackLayout>
<Image
Grid.Row="0"
Grid.Column="3"
HeightRequest="20"
WidthRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="StartAndExpand"
Aspect="AspectFit"
Source="{Binding Icon}" />
<Image
BackgroundColor="Lime"
Grid.Row="0"
Grid.Column="2"
InputTransparent="false"
Margin="0,0,10,0"
HeightRequest="20"
WidthRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="StartAndExpand"
Aspect="AspectFit"
Source="ic_two">
<Image.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding OnFavouriteCommand}"
CommandParameter="{Binding .}"
NumberOfTapsRequired="1">
</TapGestureRecognizer>
</Image.GestureRecognizers>
</Image>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在我的ViewModel中,我有
public ICommand OnFavouriteCommand { get; set; }
public MyViewModel()
{
OnFavouriteCommand = new Command<Object>(OnFavourite);
}
void OnFavourite(Object ob)
{
Debug.WriteLine(ob);
}
我在 OnFavourite
上没有遇到断点。我不知道我错过了什么?我的想法是将手势识别器附加到每个图像上,并仅传递到该行绑定的项。
我刚刚注意到,如果我移动
<Image
BackgroundColor="Lime"
Grid.Row="1"
InputTransparent="false"
Margin="0,0,10,0"
HeightRequest="20"
WidthRequest="20"
VerticalOptions="CenterAndExpand"
HorizontalOptions="StartAndExpand"
Aspect="AspectFit"
Source="ic_favourites">
<Image.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding OnFavouriteCommand}"
CommandParameter="{Binding .}"
NumberOfTapsRequired="1">
</TapGestureRecognizer>
</Image.GestureRecognizers>
</Image>
在ListView
之外,断点确实会被触发!让我感到困惑... :|