7
votes

WPF: Comment puis-je éviter le scintillement des cases à cocher cochées dans une liste de liste ou une liste de liste?

Comment puis-je éviter le scintillement des cases à cocher cochées dans une liste WPF ou ListView? Il peut être reproduit avec le code ci-dessous en cliquant sur le bouton Actualiser ou en faisant défiler la liste de liste. Si ischecked est faux, il ne glousse pas.

window1.xaml: xxx

fenêtre1.xaml.cs: xxx


0 commentaires

3 Réponses :


2
votes

Voulez-vous faire vérifier la case à cocher? Je pense que vous devez modifier l'animation lorsque vous vérifiez / définissez la case à cocher vérifiée.

Il ne se produit pas sur Windows XP (c'est pourquoi je pense que c'est une animation), je n'ai pas testé Vista :)

bonne chance.


0 commentaires

6
votes

Il scinde parce que vous jetez l'ancienne itemSource et en créant un nouveau. Cela nécessite que toute la liaison soit refaite et que le modèle affichant chaque élément doit être recréé. Pour éviter la surcharge de performance de recréer toute une liste, modifiez simplement les éléments individuels de l'élément existant. Ensuite, la partie de la base de données liée aux propriétés modifiées et / ou aux éléments sera automatiquement mise à jour sans avoir à recréer la vue de la liste. Faire cela éliminera le "scintillement" que vous voyez.

essayez ceci pour le codeBeHind: xxx


0 commentaires

1
votes

+1 au serpent qui a la bonne réponse ici.

à ajouter à ceci:

La commande de la case à cocher comporte un modèle de contrôle avec une animation de scénario qui anime l'icône vérifiée activée / désactivée lorsque l'état vérifié change. L'état vérifié change au fur et à mesure que vous attachez à ObservablectorCollection et à recréer les élémentsSource qui provoquent de nouvelles cases à cocher (avec Ischecked = False) et lié à votre viewModel (qui aboutit probablement à Ischecked = True).

Pour désactiver cette «fonctionnalité» Vous pouvez modifier la manière dont vous remplissez une observationCollection ou si cela n'est pas possible, vous pouvez modifier le modèle / style de la case à cocher.

juste inverse ingénieur le contrôle de la case à cocher (Utilisation de mélange, ou en utilisant l'un des thèmes WPF) et trouvez ces lignes. Vous devez définir la durée des deux animations sur zéro xxx


0 commentaires