Sdílet prostřednictvím


Zobrazení více zobrazení pomocí ApplicationView

Pomozte uživatelům zvýšit produktivitu tím, že jim umožníte zobrazit nezávislé části aplikace v samostatných oknech. Při vytváření více oken pro aplikaci se každé okno chová nezávisle. Na hlavním panelu se každé okno zobrazuje samostatně. Uživatelé můžou přesouvat, měnit velikost, zobrazovat a skrývat okna aplikací nezávisle a můžou přepínat mezi okny aplikací, jako by šlo o samostatné aplikace. Každé okno funguje ve vlastním vlákně.

Důležitá rozhraní API: ApplicationViewSwitcher, CreateNewView

Co je zobrazení?

Zobrazení aplikace je propojení vlákna a okna v poměru 1:1, které aplikace používá k zobrazení obsahu. Je reprezentován objektem Windows.ApplicationModel.Core.CoreApplicationView.

Zobrazení se spravují pomocí objektu CoreApplication . Zavoláte CoreApplication.CreateNewView pro vytvoření CoreApplicationView objektu. CoreApplicationView spojuje CoreWindow a CoreDispatcher (oba uložené ve vlastnostech CoreWindow a Dispatcher). CoreApplicationView si můžete představit jako objekt, který prostředí Windows Runtime používá k interakci se základním systémem Windows.

Obvykle nefungujete přímo s CoreApplicationView. Místo toho prostředí Windows Runtime poskytuje třídu ApplicationView v oboru názvů Windows.UI.ViewManagement . Tato třída poskytuje vlastnosti, metody a události, které používáte při interakci aplikace se systémem oken. Chcete-li pracovat s ApplicationView, zavolejte statickou metodu ApplicationView.GetForCurrentView, která získá instanci ApplicationView svázanou s aktuálním vláknem CoreApplicationView.

Podobně architektura XAML zabalí objekt CoreWindow do objektu Windows.UI.XAML.Window. V aplikaci XAML obvykle pracujete s objektem Window , nikoli přímo s CoreWindow.

Zobrazení nového zobrazení

I když je každé rozložení aplikace jedinečné, doporučujeme do předvídatelného umístění zahrnout tlačítko "nové okno", například v pravém horním rohu obsahu, který se dá otevřít v novém okně. Zvažte také zahrnutí možnosti místní nabídky pro otevření v novém okně.

Pojďme se podívat na postup vytvoření nového zobrazení. V této části se nové zobrazení spustí v reakci na kliknutí na tlačítko.

private async void Button_Click(object sender, RoutedEventArgs e)
{
    CoreApplicationView newView = CoreApplication.CreateNewView();
    int newViewId = 0;
    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);   
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();

        newViewId = ApplicationView.GetForCurrentView().Id;
    });
    bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
}

Zobrazit nový pohled

  1. K vytvoření nového okna a vlákna pro obsah zobrazení použijte CoreApplication.CreateNewView.

    CoreApplicationView newView = CoreApplication.CreateNewView();
    
  2. Sledujte ID nového zobrazení. Tento pohled použijete pro pozdější zobrazení.

    Možná budete chtít zvážit vytvoření určité infrastruktury do aplikace, která vám pomůže se sledováním zobrazení, která vytvoříte. Příklad naleznete ve třídě ViewLifetimeControl ve vzorovém projektu MultipleViews, jak je uvedeno v.

    int newViewId = 0;
    
  3. Na novém vlákně vyplňte okno.

    Pomocí metody CoreDispatcher.RunAsync naplánujete práci na vlákně uživatelského rozhraní pro nové zobrazení. Výraz lambda slouží k předání funkce jako argument metodě RunAsync . Práce, kterou provádíte ve funkci lambda, se děje ve vlákně nového zobrazení.

    V jazyce XAML obvykle přidáte Frame do vlastnostiObsahuokna xaml a pak přejdete Frame na stránku XAML , kde jste definovali obsah aplikace. Více informací o rámcích a stránkách viz téma Peer-to-peer navigace mezi dvěma stránkami.

    Po naplnění nového okna je nutné zavolat metodu Activate okna , aby bylo možné později zobrazit okno . K této práci dochází ve vlákně nového zobrazení, takže je aktivováno nové okno.

    Nakonec získejte ID nového zobrazení, které použijete k pozdějšímu zobrazení. Tato práce je opět na vlákně nového zobrazení, takže ApplicationView.GetForCurrentView získá ID nového zobrazení.

    await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        Frame frame = new Frame();
        frame.Navigate(typeof(SecondaryPage), null);   
        Window.Current.Content = frame;
        // You have to activate the window in order to show it later.
        Window.Current.Activate();
    
        newViewId = ApplicationView.GetForCurrentView().Id;
    });
    
  4. Zobrazte nové zobrazení pomocí volání ApplicationViewSwitcher.TryShowAsStandaloneAsync.

    Po vytvoření nového zobrazení jej můžete zobrazit v novém okně voláním ApplicationViewSwitcher.TryShowAsStandaloneAsync metoda. Parametr viewId pro tuto metodu je celé číslo, které jednoznačně identifikuje každé zobrazení v aplikaci. Id zobrazení načtete použitím vlastnosti ApplicationView.Id nebo metody ApplicationView.GetApplicationViewIdForWindow.

    bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
    

Hlavní zobrazení

První zobrazení vytvořené při spuštění aplikace se nazývá hlavní zobrazení. Toto zobrazení je uloženo ve vlastnosti CoreApplication.MainView a jeho vlastnost IsMain je nastavena na pravdu. Toto zobrazení nevytvoříte; aplikace ji vytvořila. Vlákno hlavního zobrazení slouží jako správce aplikace a všechny události aktivace aplikace se doručují v tomto vlákně.

Pokud jsou otevřená sekundární zobrazení, může být okno hlavního zobrazení skryté – například kliknutím na tlačítko Zavřít (x) v záhlaví okna , ale jeho vlákno zůstane aktivní. Volání Zavřít v hlavním zobrazení okna způsobí InvalidOperationException. (Zavřete aplikaci pomocí Application.Exit .) Pokud se vlákno hlavního zobrazení ukončí, aplikace se zavře.

Sekundární zobrazení

Další zobrazení, včetně všech zobrazení, která vytvoříte voláním CreateNewView v kódu aplikace, jsou sekundární zobrazení. Hlavní i sekundární zobrazení jsou uložená v kolekci CoreApplication.Views . Obvykle vytváříte sekundární zobrazení v reakci na akci uživatele. V některých případech systém vytvoří pro vaši aplikaci sekundární zobrazení.

Poznámka:

Ke spuštění aplikace v celoobrazovkovém režimumůžete použít funkci přiřazeného přístupu windows . Když to uděláte, systém vytvoří sekundární zobrazení pro prezentaci uživatelského rozhraní aplikace nad zamykací obrazovkou. Sekundární zobrazení vytvořená aplikací nejsou povolená, takže pokud se pokusíte zobrazit vlastní sekundární zobrazení v celoobrazovkovém režimu, vyvolá se výjimka.

Přepnutí z jednoho zobrazení na druhé

Zvažte možnost, jak uživatel přejít ze sekundárního okna zpět do nadřazeného okna. K tomu použijte metodu ApplicationViewSwitcher.SwitchAsync . Tuto metodu zavoláte z vlákna okna, ze které přecházíte, a předáte ID zobrazení okna, na které přepínáte.

await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);

Pokud používáte SwitchAsync, můžete zvolit, zda chcete zavřít počáteční okno a odebrat ho z hlavního panelu zadáním hodnoty ApplicationViewSwitchingOptions.