0
votes

Xamarin Forms ListView Multi Select

J'ai xamarin.forms app qui contient une liste de réception. Ce que j'essaie d'implémenter est multi pour sélectionner la liste de liste et faire une action. Actuellement, la liste ListView contient un événement à tartiner d'objet, qui ouvrira une autre page. Comment puis-je implémenter la sélection multiple Sélectionnez la liste de sélection lorsque l'utilisateur affiche la liste d'affichage de la liste, comme dans toutes les autres applications (par exemple; des messages, WhatsApp, etc.). Mon plan rugueux est, si vous avez atteint l'événement de presse à long terme, je montrerai la case à cocher à l'intérieur de ListView.

Donc, quelle sera la meilleure approche de Multiselect ListView? Est-il possible de l'activer avec la touche contenant la cellule de l'élément ListView? P>

Toute aide est appréciée. P>

EDIT 1 STRY>: J'ai utilisé la vue de collection comme suggéré par Jason em>. Il fournit du mode de sélection comme unique et plusieurs fonctionne bien. Mais comment puis-je modifier le mode de sélection de la vue de collection à partir de célibataires à plusieurs fois que l'utilisateur appuie sur une seule cellule? P>

EDIT 2 STRUT>: Comme suggéré par Leonlu-msft em> pour l'événement de presse long, j'ai utilisé l'effet de alexdunn.org em> . Mais je n'utilise pas le motif MVVM. Je la met en œuvre sur le code derrière.So Selon Alexdunn.org Article Link , cela fonctionne selon la commande. Comment puis-je obtenir l'événement de presse à long terme sur le backend C # à l'aide de la commande? P>

ma liste de liste avec effet de presse long. Strong> p>

 <ListView  x:Name="TimesheetListView"  ItemsSource="{Binding} " 
              HasUnevenRows="True"                                                                        
              HeightRequest="{Binding Path=Height, Source={x:Reference ListLayout}}"
              CachingStrategy="RecycleElement"
              SeparatorVisibility="None"                                       
              BackgroundColor="Transparent"                      
              HorizontalOptions="FillAndExpand"                        
              VerticalOptions="FillAndExpand">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <ViewCell.View>
                                    <Frame  BorderColor="LightGray" 
                                    CornerRadius="5" BackgroundColor="White" 
                                    Margin="2" Padding="5" HasShadow="False"
                                    Text="Long Press Me!" effects:LongPressedEffect.Command="{Binding ShowAlertCommand}"
                                    effects:LongPressedEffect.CommandParameter="{Binding .}"
                                    >
                                                         <Frame.Effects>
                                    <effects:LongPressedEffect />
                                    </Frame.Effects>        
                                    <Label Text="Lognpress" FontSize="Micro" TextColor="Black"  VerticalOptions="Center">
                                    </Label>                                
                                    </Frame>
                                </ViewCell.View>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>


4 commentaires

Utilisez CollectionView - Docs.MicRosoft .COM / FR-US / XAMARIN / XAMARIN-FORMES / UTILISATE-INTERFAC E / ...


@Jason Bonjour, merci pour les informations sur la vue de la collection. Comment puis-je faire la sélection lorsque l'utilisateur clique-t-il et maintenez la cellule de vue?


Si vous ne souhaitez pas utiliser Renderer personnalisé pour atteindre l'événement de clic long, veuillez supprimer cette fonctionnalité. GITUB.COM/XAMARIN/XAMARIN.FORMS/issues/3480 , vous pouvez aussi essayer cette solution de contexte alexdunn.org/2017/12/27/...


@ LEONLU-MSFT J'ai utilisé Xamarin.Forms Effet de presse longue de Alexdunn.org. Mais je n'utilise pas mvvm. Je n'aurais pas eu l'événement cliqué sur le backend CS. Pouvez-vous m'aider?


3 Réponses :


1
votes

Vous ne pouvez pas l'atteindre directement via Portable mais capable de faire via une plate-forme spécifique.

Remarque: Pour une sélection multiple, vous pouvez créer une propriété dans la classe modèle comme Isselected, puis basé sur la catégorie modèle. Sur cette propriété, vous effectuez la case à cocher checkbox et décochez la case.

Créer CustomVoir pour rendre votre modèle dans la liste de liste comme ci-dessous, exposer une commande pour la manipulation de l'opération de maintien dans MVVM. Et ainsi que l'interface pour élever l'action de maintien de la rendu. xxx

et xaml partie de la vue personnalisée comme ci-dessous, xxx

La partie du rendu de Android ci-dessous, xxx

de même que vous l'atteindrez pour iOS . .


1 commentaires

Merci Ganesan pour la réponse. +1. Je l'ai fait une autre façon



0
votes

Pour obtenir un événement de presse longue pour tout contrôle, créé une classe dans le code partagé nommé CustomView fort> xxx pré>

in Android, Créé une classe nommée longtouchcustomrender strong> p> xxx pré>

dans la classe créée iOS nommée longtouchcustomrender strong> p> xxx Pré>

Inside My ViewCell of Listview, P>

void Handle_LongPressEvent(object sender, System.EventArgs e)
{
    //handle long press event here
}


0 commentaires

0
votes

Vous pouvez ajouter BoxView dans votre mise en page. Lorsque cliqué, changez la couleur comme s'il est sélectionné (vous pouvez également modifier directement la couleur de votre présentation, vous n'avez pas besoin d'ajouter BoxView). Puis manipulez toutes les barres sélectionnées avec un bouton.


0 commentaires