J'ai une application Windows 8.1 avec un Dans le gabarit de données de l'élément, il est affiché que l'élément s'effondre si un drapeau ishaden est défini sur true. p> Cette approche fonctionne dans Windows Phone 8.1 xaml , Faire disparaître les éléments du Des idées sur la façon dont pour le résoudre? Peut-être même édition de style xaml? P> Voici une solution minimale pour reproduire le problème: https://dl.dropboxusercontent.com/u/73642/gv.zip p> J'ai essayé la largeur de liaison et la hauteur des éléments à l'indicateur caché et le réglage à 0 lorsque le L'article est caché, mais il n'a pas aidé, toujours une lacune dans le update strong>: une solution de contournement filtrerait la collecte liée réelle, Mais cela n'est pas possible, à cause de certaines exigences de l'entreprise. p> p> GridView code> lié à une collection observable sur mesure (triable, dédupliquée). Dans cette collection, je fais un filtrage et un drapeau ishacident pour chaque article.
listview code> mais il ne fonctionne pas dans Windows 8.1
GridView code>. Le problème avec Windows 8.1 est que lorsque je définirai un élément de la collection à masqué, ID disparaît à partir du code> GridView CODE> mais laisse un endroit vide, il y a donc un espace dans le
gridview code >. p>
p>
GridView code>. p>
3 Réponses :
J'ai essayé votre exemple de solution et j'ai changé à une liste de réception. Il présente le même comportement lorsque la grille elle-même est cachée. Je n'ai pas de xaml espion à vérifier, mais il semble que tout contrôle basé sur la liste alloua un élément rendu pour chaque élément de la liste. P>
J'ai changé votre poignée de clic sur ds.removeat (5); code> au lieu de cacher l'élément et que l'élément est retiré de la vue avec une belle animation. Cela semble être comme prévu et une recherche intéressante. P>
Cela me prend beaucoup de temps pour comprendre le problème et la solution juste devant mes yeux. Vous essayez de cacher l'élément lui-même mais le conteneur toujours là, lorsque vous ajoutez un élément à une grille à grille, l'élément est enveloppé dans un conteneur d'élément. De MSDN: P>
"Lorsque vous ajoutez un élément à un articleControl, l'élément est enveloppé dans un Conteneur d'article. Par exemple, un élément ajouté à une liste de réception est enveloppé dans un listViewItem. Sans virtualisation de l'UI, l'ensemble du jeu de données est conservé en mémoire et un conteneur d'élément est également créé pour chaque élément de la base de données. Une liste de réception qui est liée à une collection de 1000 articles Créez également 1000 conteneurs ListViewemItem stockés en mémoire. " P> blockQuote>
Vous devez désactiver le conteneur et créer deux dataTemplate et utiliser DataMplateselector Vous pouvez choisir quel type de données pour désactiver et activer les éléments. Vérifiez cet article utile . p>
Le problème est dans le Les deux Ce que vous avez vraiment besoin ici est un Après avoir mis à jour votre GridView code> 'S
ElémentsPanel code>.
itemswrapgrid code> et
wallgrid code> sont uniformes grilles. Tous leurs éléments enfants partageront la même hauteur et la même largeur. C'est pourquoi même si vous effondrez le
itemTemplate code>, l'espace est toujours réservé. P>
wrappanel code>. WinRT n'a pas d'intégré
wrappanel code> mais Jerry Nixon en a construit un et vous pouvez l'attraper à partir de Ici . p>
GridView code> S
Emnumpanel code>, vous avez toujours une dernière chose à faire. Vous devez également obtenir le
gridvievem code> qui héberge votre
itemTemplate définit son
visibilité code> sur
effondré code>. P>.
private async void Button_Click(object sender, RoutedEventArgs e)
{
ds[5].IsHidden = true;
await Task.Delay(1000);
var gridViewItem =(GridViewItem)this.gv.ContainerFromIndex(5);
gridViewItem.Visibility = Visibility.Collapsed;
}
Merci de me donner du crédit pour le wrappanel code>. Vous avez fait un bon travail d'expliquer le problème. Il me semble que le retirer de la
Observablecollection
Vous méritez le crédit @ Jerrynixon-MSFT, sinon je ne pourrais même pas y répondre! :)
Êtes-vous sûr que c'est
visibilité.collapted code>? Parce qu'il ressemble à
visibilité.Choride code> (et connaissez-vous sûrement différence ).
Oui, j'en suis sûr, il n'y a pas de visibilité.Chiché à Winrt
Qu'est-ce que vous utilisez comme votre gridview.itemspanel?