Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az x:Phase és a {x:Bind} korrektúrakiterjesztés használatával növekményesen jelenítheti meg a ListView - és GridView-elemeket , és javíthatja a pásztázó élményt. x:A fázis deklaratív módon valósítja meg ugyanazt a hatást, mint a ContainerContentChanging esemény használata a listaelemek megjelenítésének manuális vezérléséhez. Lásd még az Update ListView és a GridView elemeket növekményesen.
XAML-attribútumok használata
<object x:Phase="PhaseValue".../>
XAML-értékek
| Időszak | Description |
|---|---|
| PhaseValue | Az elem feldolgozásának fázisát jelző szám. Az alapértelmezett érték 0. |
Megjegyzések
Ha egy listát érintéssel vagy egérkerékkel pásztáznak, akkor az adatsablon összetettségétől függően előfordulhat, hogy a lista nem képes elég gyorsan megjeleníteni az elemeket, hogy lépést tartson a görgetés sebességével. Ez különösen igaz egy olyan hordozható eszközre, amely energiatakarékos processzorral, például táblagéppel rendelkezik.
A phasing lehetővé teszi az adatsablon növekményes renderelését, hogy a tartalom rangsorolva legyen, és a legfontosabb elemeket jelenítse meg először. Ez lehetővé teszi, hogy a lista megjelenítsen néhány tartalmat az egyes elemekhez, ha gyorsan pásztázó, és az idő lehetővé teszi az egyes sablonok további elemeinek megjelenítését.
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>
Az adatsablon 4 fázist ír le:
- Megjeleníti a DisplayName szövegblokkot. A megadott fázis nélküli összes vezérlő implicit módon a 0. fázis része lesz.
- A prettyDate szövegblokkot jeleníti meg.
- A prettyFileSize és a prettyImageSize szövegblokkokat jeleníti meg.
- Megjeleníti a képet.
A fokozatosság a {x:Bind} funkciója, amely a ListViewBase-ből származó vezérlőkkel működik, és növekményesen dolgozza fel az elemsablont az adatkötéshez. Listaelemek megjelenítésekor a ListViewBase egyetlen fázist jelenít meg a nézetben lévő összes elemhez, mielőtt továbblépne a következő fázisra. A renderelési munka időszeletelt kötegekben történik, így a lista görgetése során a szükséges munka újra kiértékelhető, és a már nem látható elemek esetében nem végezhető el.
Az x:Phase attribútum a(z) {x:Bind}-t használó adatsablon bármely elemén megadható. Ha egy elemnek 0-tól eltérő fázisa van, az elem elrejtve lesz a nézet elől ( átlátszatlanságon, nem láthatóságon keresztül), amíg az adott fázis feldolgozásra nem kerül, és a kötések frissülnek. Ha egy ListViewBase-alapú vezérlő görgetve van, a már nem látható elemekből újrahasznosítja az elemsablonokat az újonnan látható elemek megjelenítéséhez. A sablon felhasználói felületi elemei mindaddig megőrzik a régi értékeiket, amíg újra nem kötik az adatokat. A fokozatosság miatt az adatkötési lépés késni fog, ezért a fokozatosság érdekében el kell rejteni a felhasználói felület elemeit, ha elavultak.
Előfordulhat, hogy minden felhasználói felületi elemhez csak egy fázis van megadva. Ha igen, ez az elem összes kötésére érvényes lesz. Ha nincs megadva fázis, a 0. fázist feltételezzük.
A fázisszámoknak nem kell folytonosnak lenniük, és megegyeznek a ContainerContentChangingEventArgs.Phase értékével. A ContainerContentChanging esemény minden fázisra kiváltódik, mielőtt az x:Phase kötéseket feldolgoznák.
A fázisos kezelés csak {x:Bind} kötéseket érinti, a {Binding} kötéseket nem.
A fázisok csak akkor alkalmazhatók, ha az elemsablont olyan vezérlővel jelenítik meg, amely képes felismerni a fázisokat. Windows 10 esetén ez a ListView-t és a GridView-t jelenti. A fokozatosság nem vonatkozik a más elemvezérlőkben használt adatsablonokra, illetve más forgatókönyvekre, például a ContentTemplate - vagy a Hub-szakaszokra – ezekben az esetekben az összes felhasználói felületi elem egyszerre kötött lesz.
Windows developer