Comment désactiver la surbrillance sur ListView dans Xamarin.Forms
Je travaille avec Xamarin.Formes et XAML, et je suis en train de créer une application qui stocke une liste de produits. J'ai mis ma liste de produits dans une liste. Cela fonctionne très bien. Voici mon code XAML:
<ListView x:Name="listSushi"
ItemsSource="{x:Static local:myListSushi.All}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
RowHeight="{StaticResource rowHeight}"
>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Padding="5, 5, 0, 5"
Orientation="Horizontal"
Spacing="15">
<StackLayout>
<Image Source="{Binding ImageSource}" />
</StackLayout>
<StackLayout Padding="0, 0, 0, 0"
VerticalOptions="Center"
HorizontalOptions="FillAndExpand">
<Label Text="{Binding Name}"
Font="Bold, Medium" />
<Label Text="{Binding Description}"
Font="Small"/>
</StackLayout>
<StackLayout Orientation="Horizontal"
Padding="0, 0, 10, 0">
<Button Text=" - "
HorizontalOptions="EndAndExpand"
VerticalOptions="FillAndExpand"
Command="{Binding DeleteSushiCommand}"
CommandParameter="{Binding Name}"
/>
<Label VerticalOptions="Center"
Text="{Binding Number,StringFormat='{0}'}"
TextColor="Black"/>
<Button Text=" + "
HorizontalOptions="EndAndExpand"
VerticalOptions="FillAndExpand"
Command="{Binding AddSushiCommand}"
CommandParameter="{Binding Name}"
/>
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
J'ai juste le problème que si je clique sur une cellule de ma listView, la cellule est de mettre en évidence, et de rester en surbrillance. J'ai essayer de le désactiver avec ce code dans le code xaml.cs
listSushi.ItemSelected+= (object sender, SelectedItemChangedEventArgs e) => {
//don't do anything if we just de-selected the row
if (e.SelectedItem == null) return;
//do something with e.SelectedItem
((ListView)sender).SelectedItem = null; //de-select the row
};
Mais quand je touche une cellule, maintenant, ma liste défile automatiquement. C'est très étrange.
Personne ne sait si c'est un bug, ou que vous connaissez une solution, comme si il n'y est une propriété où je peux désactiver le mettre en évidence?
source d'informationauteur dpfauwadel
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer en utilisant la ItemTapped de l'événement au lieu de cela, c'est à dire
J'ai testé cela sur un ListView (sur un appareil Android) qui dispose de suffisamment d'éléments pour apporter de défilement dans le mélange. Je ne vois pas de défilement automatique comportement, et votre idée de mettre en SelectedItem null pour vaincre les mettre en évidence de grandes œuvres.
Je viens de trouver une autre méthode pour désactiver l'effet de survol. Et je tiens à partager avec d'autres utilisateurs.
Vous pouvez le faire directement dans le xaml. Mais cette méthode n'est pas seulement désactiver la surbrillance effet, il sera également désactiver le clic de l'événement.
Vous pouvez définir la IsEnabled attribut de ViewCell à false.
En outre, vous pouvez également activer/désactiver chaque élément de mettre en évidence l'effet par la liaison:
Espère que ça aide, merci.
Je suis en supposant que vous êtes en utilisant MVVM. Dans ces cas-je attribuer une valeur null à la propriété après l'avoir utilisé. Dans votre viewmodel vous semblez avoir une propriété SelectedItem puisque vous êtes de la lier à la propriété SelectedItem de la ListView. Donc, je voudrais faire quelque chose comme ceci:
Sur iOS marc solution ne résout pas pour moi, j'ai dû créer un CustomRenderer pour l'affichage de la liste et l'utiliser à la place.
NonSelectableListView.cs (Dans votre Projet de Formulaires)
NonSelectableListViewRenderer.cs (CustomRenderer dans votre projet iOS)
Cela devrait être utile pour votre scénario. @dpfauwadel