Sdílet prostřednictvím


x:Phase – atribut

Použijte x:Phase s rozšířením značek {x:Bind} k zobrazování položek ListView a GridView postupně a vylepšete zážitek z posouvání. x:Phase poskytuje deklarativní způsob dosažení stejného efektu jako použití události ContainerContentChanging k ručnímu řízení vykreslování položek seznamu. Podívejte se také na postupný vývoj položek ListView a GridView.

Použití atributu XAML

<object x:Phase="PhaseValue".../>

Hodnoty XAML

Term Description
PhaseValue Číslo, které označuje fázi, ve které bude prvek zpracován. Výchozí hodnota je 0.

Poznámky

Pokud je seznam posunutý rychlým dotykem nebo pomocí kolečka myši, pak v závislosti na složitosti šablony dat nemusí být seznam schopen vykreslit položky dostatečně rychle, aby udržel krok s rychlostí posouvání. To platí zejména pro přenosné zařízení s výkonným procesorem, jako je tablet.

Postupné vykreslování šablony dat umožňuje postupné vykreslování šablony dat, aby bylo možné určit prioritu obsahu a jako první se vykreslují nejdůležitější prvky. Díky tomu může seznam zobrazovat určitý obsah pro každou položku, pokud je posouvání rychlé, a vykreslí více prvků každé šablony podle potřeby.

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>

Šablona dat popisuje 4 fáze:

  1. Zobrazí blok textu DisplayName. Všechny ovládací prvky bez zadané fáze se implicitně považují za součást fáze 0.
  2. Zobrazuje blok textu prettyDate.
  3. Zobrazuje textové bloky prettyFileSize a prettyImageSize.
  4. Zobrazuje obrázek.

Phasing je funkce {x:Bind} , která pracuje s ovládacími prvky odvozenými z ListViewBase a která přírůstkově zpracovává šablonu položky pro datovou vazbu. Při vykreslování položek seznamu vykreslí ListViewBase jednu fázi pro všechny položky v zobrazení před přechodem na další fázi. Vykreslovací práce se provádí v dávkách s časovým řezem, aby se při posouvání seznamu bylo možné znovu posoudit požadovanou práci a neprovádí se u položek, které už nejsou viditelné.

Atribut x:Phase lze zadat u libovolného prvku v šabloně dat, která používá {x:Bind}. Pokud má prvek jinou fázi než 0, bude prvek skrytý v zobrazení (prostřednictvím neprůhlednosti, nikoli viditelnosti), dokud se tato fáze nezpracuje a vazby se aktualizují. Když se ovládací prvek odvozený z ListViewBase posune, budou šablony položek z těch, které již nejsou na obrazovce, recyklovány pro vykreslení nově viditelných položek. Prvky uživatelského rozhraní v rámci šablony si zachovají staré hodnoty, dokud se znovu nepropojí s daty. Fázování způsobí zpoždění datové vazby, a proto je nutné skrýt prvky uživatelského rozhraní, pokud jsou zastaralé.

Každý prvek uživatelského rozhraní může obsahovat pouze jednu fázi. Pokud ano, bude to platit pro všechny vazby v elementu. Pokud není zadaná fáze, předpokládá se fáze 0.

Čísla fází nemusí být souvislá a jsou stejná jako hodnota ContainerContentChangingEventArgs.Phase. Událost ContainerContentChanging bude vyvolána pro každou fázi před zpracováním vazeb x:Phase .

Phasing má vliv pouze na vazby {x:Bind} , nikoli na vazby {Binding} .

Použití fáze se uplatní pouze v případech, kdy je šablona položky vykreslena pomocí ovládacího prvku, který je obeznámen s fázováním. Pro Windows 10 to znamená ListView a GridView. Fáze se nevztahuje na šablony dat používané v jiných ovládacích prvcích položek nebo pro jiné scénáře, jako jsou oddíly ContentTemplate nebo Hub – v těchto případech budou všechny prvky uživatelského rozhraní vázané na data najednou.