Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez x :Phase avec l’extension de balisage {x :Bind} pour afficher les éléments ListView et GridView de manière incrémentielle et améliorer l’expérience de panoramique. x :Phase fournit un moyen déclaratif d’obtenir le même effet que l’utilisation de l’événement ContainerContentChanging pour contrôler manuellement le rendu des éléments de liste. Consultez également Mettre à jour les éléments ListView et GridView de manière incrémentielle.
Utilisation des attributs XAML
<object x:Phase="PhaseValue".../>
Valeurs XAML
| Terme | Descriptif |
|---|---|
| PhaseValue | Nombre qui indique la phase dans laquelle l’élément sera traité. La valeur par défaut est 0. |
Remarques
Si une liste est déplacée rapidement avec le tactile ou à l'aide de la molette de la souris, selon la complexité du modèle de données, la liste ne peut pas afficher les éléments assez rapidement pour suivre la vitesse de défilement. Cela est particulièrement vrai pour un appareil portable avec un processeur efficace comme une tablette.
La phase permet le rendu incrémentiel du modèle de données afin que le contenu puisse être hiérarchisé et les éléments les plus importants affichés en premier. Cela permet à la liste d’afficher du contenu pour chaque élément si le mouvement panoramique est rapide et affiche plus d’éléments de chaque modèle au fur et à mesure que le temps le permet.
Example
<DataTemplate x:Key="PhasedFileTemplate" x:DataType="model:FileItem">
<Grid Width="200" Height="80">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Grid.RowSpan="4" Source="{x:Bind ImageData}" MaxWidth="70" MaxHeight="70" x:Phase="3"/>
<TextBlock Text="{x:Bind DisplayName}" Grid.Column="1" FontSize="12"/>
<TextBlock Text="{x:Bind prettyDate}" Grid.Column="1" Grid.Row="1" FontSize="12" x:Phase="1"/>
<TextBlock Text="{x:Bind prettyFileSize}" Grid.Column="1" Grid.Row="2" FontSize="12" x:Phase="2"/>
<TextBlock Text="{x:Bind prettyImageSize}" Grid.Column="1" Grid.Row="3" FontSize="12" x:Phase="2"/>
</Grid>
</DataTemplate>
Le modèle de données décrit 4 phases :
- Présente le bloc de texte DisplayName. Tous les contrôles sans phase spécifiée sont implicitement considérés comme faisant partie de la phase 0.
- Affiche le bloc de texte prettyDate.
- Affiche les blocs de texte prettyFileSize et prettyImageSize.
- Affiche l’image.
Phasing est une fonctionnalité de {x :Bind} qui fonctionne avec des contrôles dérivés de ListViewBase et qui traite de manière incrémentielle le modèle d’élément pour la liaison de données. Lors du rendu d’éléments de liste, ListViewBase affiche une seule phase pour tous les éléments de la vue avant de passer à la phase suivante. Le travail de rendu est effectué dans des lots à tranches temporelles afin que, à mesure que la liste est affichée, le travail requis peut être réévalué et non effectué pour les éléments qui ne sont plus visibles.
L’attribut x :Phase peut être spécifié sur n’importe quel élément d’un modèle de données qui utilise {x :Bind}. Lorsqu’un élément a une phase autre que 0, l’élément est masqué de l’affichage (via Opacity, pas Visibility) tant que cette phase n’est pas traitée et que les liaisons sont mises à jour. Lorsqu’un contrôle dérivé de ListViewBase est défilé, il recycle les modèles d’éléments des éléments qui ne sont plus à l’écran afin d’afficher ceux qui viennent d’apparaître. Les éléments d’interface utilisateur dans le modèle conservent leurs anciennes valeurs jusqu’à ce qu’elles soient à nouveau liées aux données. Le phasage entraîne le retard de l’étape de liaison de données et, par conséquent, l’exécution progressive doit masquer les éléments de l’interface utilisateur dans le cas où ils sont obsolètes.
Chaque élément d’interface utilisateur n’a peut-être qu’une seule phase spécifiée. Dans ce cas, cela s’applique à toutes les liaisons de l’élément. Si aucune phase n’est spécifiée, la phase 0 est supposée.
Les numéros de phase n’ont pas besoin d’être contigus et sont identiques à la valeur de ContainerContentChangingEventArgs.Phase. L’événement ContainerContentChanging sera déclenché pour chaque phase avant le traitement des liaisons x :Phase .
Le phasage affecte uniquement les liaisons {x :Bind} , et non les liaisons {Binding} .
Le phasage ne s'applique que lorsque le modèle d'élément est rendu à l'aide d'un composant qui gère le phasage. Pour Windows 10, cela signifie ListView et GridView. Le phasage ne s’applique pas aux modèles de données utilisés dans d’autres contrôles d’éléments, ou pour d’autres scénarios tels que ContentTemplate ou les sections Hub , dans ce cas, tous les éléments d’interface utilisateur sont liés à la fois.
Windows developer