Xamarin与ContextActions和GestureRecognizer

时间:2017-11-28 11:04:52

标签: c# android listview xamarin xamarin.forms

我正在编写一个xamarin表单应用。我有一个带有自定义单元格(xaml)的ListView:

<ViewCell>
    <ViewCell.ContextActions>
        <MenuItem Clicked="Btn_delete_Clicked" CommandParameter="{Binding .}" Text="Удалить" IsDestructive="True" />
            </ViewCell.ContextActions>
                 <Grid>
                      <Grid.ColumnDefinitions>
                          <ColumnDefinition Width="*" />
                      </Grid.ColumnDefinitions>
                      <Grid.RowDefinitions>
                          <RowDefinition Height="Auto" />
                          <RowDefinition Height="Auto" />
                      </Grid.RowDefinitions>
                            <Image Source="{Binding Image}" Grid.Row="0" Grid.Column="0" Margin="5" VerticalOptions="Center" 
                                   HorizontalOptions="Center" Aspect="AspectFit" WidthRequest="170" HeightRequest="170"  >
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="Btn_fullscr_Clicked" />
                                </Image.GestureRecognizers>
                            </Image>

                            <Entry x:Name="EditTextPhoto" Placeholder="[Комментарий отсутствует]" Grid.Row="1" Grid.Column="0" 
                                   Margin="5" VerticalOptions="FillAndExpand" HorizontalOptions="Fill" FontSize="14"
                                   Text="{Binding Comment}" BackgroundColor="#44104e8b" IsEnabled="{Binding IsPreview}" TextColor="Black" HorizontalTextAlignment="Center" />
                        </Grid>
                    </ViewCell>

正如您所看到的,我为我的图像设置了ContextActions和TapGestureRecognizer。 A有一个关于android的错误:如果你点击一个视图单元格,就会出现上下文操作。如你所知,ContextAction只能在长时间内完成。但是当我从Image中删除gesturerecognizer时,一切正常。 有人知道如何解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决此问题的方法。我在我的图像所在的同一行添加了一个透明按钮,并删除了tapgesturerecognizer。所以最终的代码是:

<ViewCell>
    <ViewCell.ContextActions>
         <MenuItem Clicked="Btn_delete_Clicked" CommandParameter="{Binding .}" Text="Удалить" IsDestructive="True" />
    </ViewCell.ContextActions>
         <Grid>
               <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="*" />
               </Grid.ColumnDefinitions>
               <Grid.RowDefinitions>
                     <RowDefinition Height="Auto" />
                     <RowDefinition Height="Auto" />
               </Grid.RowDefinitions>
               <Image Source="{Binding Image}" Grid.Row="0" Grid.Column="0" Margin="5" VerticalOptions="Center" 
                                   HorizontalOptions="Center" Aspect="AspectFit" WidthRequest="170">
               </Image>
               <Button Grid.Row="0" Grid.Column="0" HorizontalOptions="Center" Clicked="Btn_fullscr_Clicked" 
                                    WidthRequest="170" VerticalOptions="FillAndExpand" BackgroundColor="Transparent" BorderColor="Transparent" />
               <Entry x:Name="EditTextPhoto" Placeholder="[Комментарий отсутствует]" Grid.Row="1" Grid.Column="0" 
                                   Margin="5" VerticalOptions="FillAndExpand" HorizontalOptions="Fill" FontSize="14"
                                   Text="{Binding Comment}" IsEnabled="{Binding IsPreview}" TextColor="Black" HorizontalTextAlignment="Center" />
         </Grid>
    </ViewCell>

希望未来可能对某人有所帮助!