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.
Help uw gebruikers productiever te zijn door ze onafhankelijke onderdelen van uw app in afzonderlijke vensters te laten bekijken. Wanneer u meerdere vensters voor een app maakt, gedraagt elk venster zich onafhankelijk van elkaar. Op de taakbalk wordt elk venster afzonderlijk weergegeven. Gebruikers kunnen app-vensters onafhankelijk verplaatsen, het formaat ervan wijzigen, weergeven en verbergen en kunnen schakelen tussen app-vensters alsof ze afzonderlijke apps zijn. Elk venster werkt in een eigen thread.
Belangrijke API's: ApplicationViewSwitcher, CreateNewView
Wat is een weergave?
Een app-weergave is de koppeling 1:1 van een thread en een venster dat door de app wordt gebruikt om inhoud weer te geven. Het wordt vertegenwoordigd door een Windows.ApplicationModel.Core.CoreApplicationView-object .
Weergaven worden beheerd door het CoreApplication-object. U roept CoreApplication.CreateNewView aan om een CoreApplicationView-object te maken. De CoreApplicationView brengt een CoreWindow en een CoreDispatcher samen (opgeslagen in de eigenschappen CoreWindow en Dispatcher ). U kunt CoreApplicationView beschouwen als het object dat de Windows Runtime gebruikt om te communiceren met het kern-Windows-systeem.
Normaal gesproken werkt u niet rechtstreeks met CoreApplicationView. In plaats daarvan biedt de Windows Runtime de ApplicationView-klasse in de naamruimte Windows.UI.ViewManagement. Deze klasse biedt eigenschappen, methoden en gebeurtenissen die u gebruikt wanneer uw app communiceert met het venstersysteem. Als u met een ApplicationView wilt werken, roept u de statische ApplicationView.GetForCurrentView-methode aan, waarmee een ApplicationView-exemplaar wordt opgehaald dat is gekoppeld aan de thread van de huidige CoreApplicationView.
Op dezelfde manier verpakt het XAML-framework het CoreWindow-object in een Windows.UI.XAML.Window-object . In een XAML-app werkt u doorgaans met het vensterobject in plaats van rechtstreeks met corewindow te werken.
Een nieuwe weergave weergeven
Hoewel elke app-indeling uniek is, raden we aan een 'nieuw venster'-knop op een voorspelbare locatie toe te voegen, zoals in de rechterbovenhoek van de inhoud die in een nieuw venster kan worden geopend. U kunt ook een contextmenuoptie opnemen in 'Openen in een nieuw venster'.
Laten we eens kijken naar de stappen voor het maken van een nieuwe weergave. Hier wordt de nieuwe weergave gestart als reactie op een knop klikken.
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);
}
Een nieuwe weergave weergeven
Roep CoreApplication.CreateNewView aan om een nieuw venster en een nieuwe thread te maken voor de weergave-inhoud.
CoreApplicationView newView = CoreApplication.CreateNewView();Houd de ID van het nieuwe overzicht bij. U gebruikt dit om de weergave later weer te geven.
U kunt overwegen om een infrastructuur in uw app te bouwen om de weergaven die u maakt bij te houden. Zie de
ViewLifetimeControlklasse in het voorbeeld MultipleViews voor een voorbeeld.int newViewId = 0;Vul het venster in met gegevens in de nieuwe thread.
U gebruikt de methode CoreDispatcher.RunAsync om werk te plannen voor de UI-thread voor de nieuwe weergave. U gebruikt een lambda-expressie om een functie als argument door te geven aan de Methode RunAsync . Het werk dat u in de lambda-functie uitvoert, vindt plaats op de thread van de nieuwe weergave.
In XAML voegt u doorgaans een Frame- toe aan de eigenschap VensterInhoud en navigeert u vervolgens door de Frame- naar een XAML--pagina waar u de app-inhoud hebt gedefinieerd. Voor meer informatie over frames en pagina's, zie Peer-to-peernavigatie tussen twee pagina's.
Nadat het nieuwe venster is ingevuld, moet u de activeringsmethode van het venster aanroepen om het venster later weer te geven. Dit werk gebeurt op de thread van de nieuwe weergave, waardoor het nieuwe venster wordt geactiveerd.
Haal ten slotte de Id van de nieuwe weergave op die u gebruikt om de weergave later weer te geven. Nogmaals, dit werk bevindt zich in de thread van de nieuwe weergave, dus ApplicationView.GetForCurrentView haalt de Id van de nieuwe weergave op.
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; });De nieuwe weergave weergeven door ApplicationViewSwitcher.TryShowAsStandaloneAsync aan te roepen.
Nadat u een nieuwe weergave hebt gemaakt, kunt u deze weergeven in een nieuw venster door de methode ApplicationViewSwitcher.TryShowAsStandaloneAsync aan te roepen. De parameter viewId voor deze methode is een geheel getal dat elk van de weergaven in uw app uniek identificeert. U haalt de weergave-id op met behulp van de eigenschap ApplicationView.Id of de methode ApplicationView.GetApplicationViewIdForWindow .
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
De hoofdweergave
De eerste weergave die wordt gemaakt wanneer uw app wordt gestart, wordt de hoofdweergave genoemd. Deze weergave wordt opgeslagen in de eigenschap CoreApplication.MainView, en de eigenschap IsMain is waar. U maakt deze weergave niet; deze wordt gemaakt door de app. De thread van de hoofdweergave fungeert als manager voor de app en alle activeringsevenementen voor de app worden op deze thread geleverd.
Als er secundaire weergaven zijn geopend, kan het venster van de hoofdweergave worden verborgen, bijvoorbeeld door op de knop Sluiten (x) in de titelbalk van het venster te klikken, maar blijft de thread actief. Als wordt aangeroepen in het venster van de hoofdweergave, treedt er een InvalidOperationException- op. (Gebruik Application.Exit om uw app te sluiten.) Als de thread van de hoofdweergave wordt beƫindigd, wordt de app gesloten.
Secundaire weergaven
Andere weergaven, inclusief alle weergaven die u maakt door CreateNewView aan te roepen in uw app-code, zijn secundaire weergaven. Zowel de hoofdweergave als de secundaire weergave worden opgeslagen in de verzameling CoreApplication.Views . Normaal gesproken maakt u secundaire weergaven als reactie op een gebruikersactie. In sommige gevallen maakt het systeem secundaire weergaven voor uw app.
Opmerking
U kunt de door Windows toegewezen toegangsfunctie gebruiken om een app uit te voeren in de kioskmodus. Wanneer u dit doet, maakt het systeem een secundaire weergave om uw app-gebruikersinterface boven het vergrendelingsscherm weer te geven. Secundaire weergaven die door apps zijn gemaakt, zijn niet toegestaan. Als u uw eigen secundaire weergave probeert weer te geven in de kioskmodus, wordt er een uitzondering gegenereerd.
Overschakelen van de ene weergave naar de andere
U kunt de gebruiker een manier bieden om vanuit een secundair venster terug te navigeren naar het bovenliggende venster. Gebruik hiervoor de methode ApplicationViewSwitcher.SwitchAsync . U roept deze methode aan vanuit de thread van het venster waarvan u overschakelt en geeft de weergave-id door van het venster waarnaar u overschakelt.
await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);
Wanneer u SwitchAsync gebruikt, kunt u kiezen of u het eerste venster wilt sluiten en wilt verwijderen uit de taakbalk door de waarde van ApplicationViewSwitchingOptions op te geven.