Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik x:Phase met de markeringsextensie {x:Bind} om listView- en GridView-items incrementeel weer te geven en de panning-ervaring te verbeteren. x:Phase biedt een declaratieve manier om hetzelfde effect te bereiken als het gebruik van de gebeurtenis ContainerContentChanging om handmatig het weergeven van lijstitems te beheren. Zie ook items in ListView en GridView geleidelijk bijwerken.
XAML-kenmerkgebruik
<object x:Phase="PhaseValue".../>
XAML-waarden
| Termijn | Description |
|---|---|
| PhaseValue | Een getal dat de fase aangeeft waarin het element wordt verwerkt. De standaardwaarde is 0. |
Opmerkingen
Als een lijst snel wordt gescrolld met touch of met het muiswiel, kan het zijn dat de lijst niet snel genoeg items kan weergeven om het tempo van het scrollen bij te houden, afhankelijk van de complexiteit van de datatemplate. Dit geldt met name voor een draagbaar apparaat met een energie-efficiënte CPU zoals een tablet.
Fasering van de gegevenssjabloon maakt stapsgewijze weergave mogelijk, zodat de inhoud kan worden geprioriteerd en de belangrijkste elementen als eerste worden weergegeven. Hierdoor kan de lijst enige inhoud voor elk item weergeven als er snel wordt gepand, en zal meer elementen van elke sjabloon renderen wanneer de tijd het toelaat.
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>
In de gegevenssjabloon worden vier fasen beschreven:
- Hiermee wordt het tekstblok DisplayName weergegeven. Alle besturingselementen zonder een opgegeven fase worden impliciet beschouwd als onderdeel van fase 0.
- Toont het prettyDate-tekstblok.
- Toont de tekstblokken prettyFileSize en prettyImageSize.
- Toont de afbeelding.
Phasing is een functie van {x:Bind} die werkt met besturingselementen die zijn afgeleid van ListViewBase en die incrementeel de itemsjabloon voor gegevensbinding verwerkt. Wanneer u lijstitems weergeeft, geeft ListViewBase één fase weer voor alle items in de weergave voordat u naar de volgende fase gaat. Het renderingwerk wordt uitgevoerd in tijdsgebonden batches, zodat bij het scrollen van de lijst het vereiste werk opnieuw kan worden geëvalueerd en niet wordt uitgevoerd voor niet-zichtbare items.
Het kenmerk x:Phase kan worden opgegeven op elk element in een gegevenssjabloon dat gebruikmaakt van {x:Bind}. Wanneer een element een andere fase dan 0 heeft, wordt het element verborgen voor weergave (via dekking, niet zichtbaarheid) totdat die fase wordt verwerkt en bindingen worden bijgewerkt. Wanneer een van ListViewBase afgeleid besturingselement wordt gescrold, worden de itemsjablonen van items die niet meer op het scherm staan, gerecycled om de nieuw zichtbare items weer te geven. Gebruikersinterface-elementen in de sjabloon behouden hun oude waarden totdat ze opnieuw zijn gebonden aan gegevens. Door de fasering wordt de gegevensbindingsstap vertraagd en daarom moeten de UI-elementen verborgen worden omdat ze mogelijk verouderd zijn.
Elk UI-element kan slechts één fase hebben opgegeven. Zo ja, dan geldt dit voor alle bindingen op het element. Als er geen fase is opgegeven, wordt fase 0 verondersteld.
Fasenummers hoeven niet aaneengesloten te zijn en zijn hetzelfde als de waarde van ContainerContentChangingEventArgs.Phase. De gebeurtenis ContainerContentChanging wordt voor elke fase gegenereerd voordat de x:Phase-bindingen worden verwerkt.
De fasering is alleen van invloed op {x:Bind} -bindingen, niet op {Binding} -bindingen.
De fasering is alleen van toepassing wanneer de itemsjabloon wordt weergegeven met behulp van een besturingselement dat op de hoogte is van de fasering. Voor Windows 10 betekent dit ListView en GridView. De fasering is niet van toepassing op gegevenssjablonen die worden gebruikt in andere itembesturingselementen of voor andere scenario's zoals ContentTemplate - of Hub-secties . In die gevallen zijn alle UI-elementen gegevens tegelijk gebonden.
Windows developer