Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Hjälp användarna att bli mer produktiva genom att låta dem visa oberoende delar av din app i separata fönster. När du skapar flera fönster för en app fungerar varje fönster oberoende av varandra. Aktivitetsfältet visar varje fönster separat. Användare kan flytta, ändra storlek på, visa och dölja appfönster separat och kan växla mellan appfönster som om de vore separata appar. Varje fönster fungerar i sin egen tråd.
Viktiga API:er: ApplicationViewSwitcher, CreateNewView
Vad är en vy?
En appvy är 1:1-parkopplingen av en tråd och ett fönster som appen använder för att visa innehåll. Det representeras av ett Windows.ApplicationModel.Core.CoreApplicationView-objekt .
Vyer hanteras av CoreApplication-objektet . Du anropar CoreApplication.CreateNewView för att skapa ett CoreApplicationView-objekt . CoreApplicationView sammanför en CoreWindow och en CoreDispatcher (lagras i egenskaperna CoreWindow och Dispatcher). Du kan se CoreApplicationView som det objekt som Windows Runtime använder för att interagera med kärnsystemet i Windows.
Du arbetar vanligtvis inte direkt med CoreApplicationView. I stället tillhandahåller Windows Runtime klassen ApplicationView i namnområdet Windows.UI.ViewManagement . Den här klassen innehåller egenskaper, metoder och händelser som du använder när din app interagerar med fönstersystemet. Om du vill arbeta med en ApplicationView-anropar du metoden static ApplicationView.GetForCurrentView, som hämtar en ApplicationView--instans som är kopplad till den aktuella CoreApplicationView-tråden.
På samma sätt omsluter XAML-ramverket CoreWindow-objektet i ett Windows.UI.XAML.Window-objekt . I en XAML-app interagerar du vanligtvis med Window-objektet i stället för att arbeta direkt med CoreWindow.
Visa en ny vy
Även om varje applayout är unik rekommenderar vi att du inkluderar en "nytt fönster"-knapp på en förutsägbar plats, till exempel det övre högra hörnet av innehållet som kan öppnas i ett nytt fönster. Överväg också att inkludera ett snabbmenyalternativ för att "Öppna i ett nytt fönster".
Nu ska vi titta på stegen för att skapa en ny vy. Här startas den nya vyn som svar på ett knappklick.
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);
}
Visa en ny vy
Anropa CoreApplication.CreateNewView för att skapa ett nytt fönster och en tråd för visningsinnehållet.
CoreApplicationView newView = CoreApplication.CreateNewView();Spåra Id för den nya vyn. Du använder detta för att visa vyn senare.
Du kanske vill överväga att skapa en infrastruktur i din app för att hjälpa dig att spåra vyerna som du skapar.
ViewLifetimeControlSe klassen i Exemplet MultipleViews för ett exempel.int newViewId = 0;Fyll i fönstret i den nya tråden.
Du använder metoden CoreDispatcher.RunAsync för att schemalägga arbete på användargränssnittstråden för den nya vyn. Du använder ett lambda-uttryck för att skicka en funktion som ett argument till metoden RunAsync . Det arbete du utför i lambdafunktionen sker på den nya vyns tråd.
I XAML lägger du vanligtvis till en Frame- i Window:s egenskapsfält Content och navigerar sedan Frame till en XAML Page där du har definierat ditt appinnehåll. Mer information om ramar och sidor finns i Peer-to-peer-navigering mellan två sidor.
När det nya fönstret har fyllts i måste du anropa metoden Aktivera i fönstret för att visa fönstret senare. Det här arbetet sker i den nya vyns tråd, så den nya fönstret aktiveras.
Hämta slutligen den nya vyns ID som du använder för att visa vyn senare. Återigen är det här arbetet på den nya vyns tråd, så ApplicationView.GetForCurrentView får id för den nya vyn.
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; });Visa den nya vyn genom att anropa ApplicationViewSwitcher.TryShowAsStandaloneAsync.
När du har skapat en ny vy kan du visa den i ett nytt fönster genom att anropa metoden ApplicationViewSwitcher.TryShowAsStandaloneAsync . ViewId-parametern för den här metoden är ett heltal som unikt identifierar var och en av vyerna i din app. Du hämtar vy-ID:t med antingen egenskapen ApplicationView.Id eller metoden ApplicationView.GetApplicationViewIdForWindow .
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
Huvudvyn
Den första vyn som skapas när appen startar kallas huvudvyn. Den här vyn lagras i egenskapen CoreApplication.MainView och egenskapen IsMain är sann. Du skapar inte den här vyn. den skapas av appen. Huvudvyns tråd fungerar som chef för appen och alla appaktiveringshändelser levereras i den här tråden.
Om sekundära vyer är öppna kan huvudvyns fönster döljas, till exempel genom att klicka på knappen stäng (x) i fönstrets namnlist, men tråden förblir aktiv. Om du anropar Stäng i huvudvyns fönster uppstår en InvalidOperationException. (Stäng appen med Application.Exit .) Om huvudvyns tråd avslutas stängs appen.
Sekundära vyer
Andra vyer, inklusive alla vyer som du skapar genom att anropa CreateNewView i din appkod, är sekundära vyer. Både huvudvyn och de sekundära vyerna lagras i samlingen CoreApplication.Views . Vanligtvis skapar du sekundära vyer som svar på en användaråtgärd. I vissa fall skapar systemet sekundära vyer för din app.
Anmärkning
Du kan använda funktionen Windows tilldelad åtkomst för att köra en app i kioskläge. När du gör det skapar systemet en sekundär vy som visar appens användargränssnitt ovanför låsskärmen. Appskapade sekundära vyer är inte tillåtna, så om du försöker visa din egen sekundära vy i helskärmsläge genereras ett undantag.
Växla från en vy till en annan
Överväg att tillhandahålla ett sätt för användaren att navigera från ett sekundärt fönster tillbaka till det överordnade fönstret. Det gör du genom att använda metoden ApplicationViewSwitcher.SwitchAsync . Du anropar den här metoden från tråden i fönstret som du växlar från och skickar visnings-ID:t för fönstret som du växlar till.
await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);
När du använder SwitchAsync kan du välja om du vill stänga det första fönstret och ta bort det från aktivitetsfältet genom att ange värdet för ApplicationViewSwitchingOptions.