2017-04-06 17 views
1

J'ai un ListView dans mon application Windows Phone 8.1 WinRT qui regroupe également des éléments. Les modèles de groupe sont définis et incluent des objets Rectangle avec ImageBrush objets pour leur propriété Fill. Le ListView a un ItemsStackPanel comme ItemsPanel pour afficher les articles et les groupes. Le problème est, je pense, le ItemsStackPanel réutilisant les conteneurs d'éléments lors de la virtualisation parce que les images sont chargées et dessinées une fois, mais quand je défile, les ordres d'image se brouillent avec certains d'entre eux perdant les images et les événements de chargement d'image du ImageBrush ne se déclenche pas non plus, indiquant que les éléments sont mis en cache.ItemsStackPanel continue à utiliser des éléments mis en cache au lieu de les recréer à chaque fois

J'ai essayé de définir VirtualizingStackPanel.VirtualizationMode="Standard" au lieu de "Recycling" sur le ItemsStackPanel mais ne semble pas avoir d'effet.

Toute aide serait appréciée.

+0

Est-ce que vous jouez avec les objets item listview dans codebehind? Je sais que cela n'arrivera jamais dans WPF si vous le faites correctement avec des templates, mais je pense que vous êtes vraiment en UWP et vous venez d'ajouter le tag WPF dans l'espoir d'être downvoted par des vieillards irritables (pas travailler dans mon cas, peut-être que je ne suis pas assez vieux ou assez irritable). –

+0

La seule chose que je fais est de m'abonner à l'événement ImageBrush.ImageFailed pour charger une image par défaut dans le cas où l'image principale ne peut pas être ouverte pour une raison quelconque (mais ces gestionnaires ne sont pas touchés).). ItemsWrapGrid lié à la même source n'a pas ce problème. Des idées? Et j'ai spécifiquement dit que Windows Phone 8.1 WinRT est la plate-forme, mais j'ai pensé que WPF est assez proche pour que quelqu'un ait eu le même problème et puisse vous aider. – TheAgent

+0

Aucune idée, désolé. Si j'étais vous, je créerais un exemple minimal qui reproduirait le problème. Habituellement pour moi, je trouve que je * ne peux pas * reproduire le problème dans un contexte plus simple, donc je compare juste l'exemple non brisé avec le code réel cassé et trouve la solution. Mais si vous pouvez écrire un MVCE qui fonctionne (heu, ne fonctionne pas, je veux dire), ce serait une aide énorme pour quiconque essaye d'aider. –

Répondre

0

Il s'avère que la manipulation ImageBrush.ImageFailed (ou tout autre événement) dans le modèle d'en-tête de groupe d'un ItemsStackPanel provoque un comportement très étrange.

Je n'ai pas vraiment résolu le problème, j'ai simplement supprimé les gestionnaires d'événements et implémenté un autre mécanisme pour charger les images par défaut lorsque le fichier image principal est introuvable.

J'ai une autre image par défaut chargée dans un Image et j'ai placé l'autre Image au-dessus du premier, en chargeant le fichier d'image actuel. Si le chargement échoue, celui en dessous montre.