Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pomóż swoim użytkownikom być bardziej produktywnymi, umożliwiając im wyświetlanie niezależnych części aplikacji w oddzielnych oknach. Podczas tworzenia wielu okien dla aplikacji każde okno działa niezależnie. Pasek zadań pokazuje poszczególne okna oddzielnie. Użytkownicy mogą przenosić, zmieniać rozmiar, pokazywać i ukrywać okna aplikacji niezależnie i przełączać się między oknami aplikacji, jakby były oddzielnymi aplikacjami. Każde okno działa we własnym wątku.
ważne interfejsy API: ApplicationViewSwitcher, CreateNewView
Co to jest widok?
Widok aplikacji to połączenie wątku 1:1 z oknem, które aplikacja wykorzystuje do wyświetlania zawartości. Jest on reprezentowany przez obiekt
Widoki są zarządzane przez obiekt CoreApplication. Wywołasz CoreApplication.CreateNewView, aby utworzyć obiekt CoreApplicationView.
CoreApplicationView łączy CoreWindow i CoreDispatcher (przechowywane we właściwościach CoreWindow i Dispatcher). Można traktować
Zazwyczaj nie pracujesz bezpośrednio z CoreApplicationView. Zamiast tego środowisko uruchomieniowe systemu Windows udostępnia klasę ApplicationView w przestrzeni nazw Windows.UI.ViewManagement. Ta klasa udostępnia właściwości, metody i zdarzenia, które są używane podczas interakcji aplikacji z systemem okien. Aby pracować z
Podobnie struktura XAML opakowuje obiekt CoreWindow w obiekcie Windows.UI.XAML.Window. W aplikacji XAML zazwyczaj wchodzisz w interakcję z obiektem okna
Pokaż nowy widok
Mimo że każdy układ aplikacji jest unikatowy, zalecamy dołączenie przycisku "nowe okno" w przewidywalnej lokalizacji, takiego jak prawy górny róg zawartości, którą można otworzyć w nowym oknie. Rozważ również dołączenie opcji menu kontekstowego do opcji "Otwórz w nowym oknie".
Przyjrzyjmy się krokom tworzenia nowego widoku. W tym miejscu nowy widok zostanie uruchomiony w odpowiedzi na kliknięcie przycisku.
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);
}
Aby wyświetlić nowy widok
Wywołaj CoreApplication.CreateNewView, aby utworzyć nowe okno i wątek dla zawartości widoku.
CoreApplicationView newView = CoreApplication.CreateNewView();Śledź identyfikator nowego widoku. Ta opcja służy do wyświetlania widoku później.
Warto rozważyć utworzenie infrastruktury w aplikacji, aby ułatwić śledzenie utworzonych widoków. Zobacz klasę
ViewLifetimeControlw próbie MultipleViews jako przykład.int newViewId = 0;W nowym wątku wypełnij okno.
Użyjesz metody CoreDispatcher.RunAsync, aby zaplanować pracę nad wątkiem interfejsu użytkownika dla nowego widoku. Aby przekazać funkcję jako argument do metody
RunAsync , należy użyć wyrażenia lambda. Praca wykonywana w funkcji lambda odbywa się w wątku nowego widoku. W XAML zazwyczaj dodajesz ramkę do oknawłaściwości Content, a następnie nawigujesz ramkę do strony XAML, na której zdefiniowałeś zawartość aplikacji. Aby uzyskać więcej informacji na temat ramek i stron, zobacz sekcję o nawigacji między dwiema stronami typu peer-to-peer.
Po wypełnieniu nowego okna , należy wywołać metodę Activate dla okna Window, aby później wyświetlić okno . Ta praca odbywa się w wątku nowego widoku, więc jest aktywowane nowe okno .
Na koniec uzyskaj identyfikator nowego widoku, którego użyjesz do wyświetlenia widoku później. Ponownie, praca ta jest wykonywana w wątku nowego widoku, dlatego ApplicationView.GetForCurrentView pobiera identyfikator nowego widoku.
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; });Pokaż nowy widok, wywołując ApplicationViewSwitcher.TryShowAsStandaloneAsync.
Po utworzeniu nowego widoku można go wyświetlić w nowym oknie, wywołując metodę ApplicationViewSwitcher.TryShowAsStandaloneAsync. Parametr viewId dla tej metody jest liczbą całkowitą, która jednoznacznie identyfikuje każdy widok w aplikacji. Aby pobrać identyfikator widoku , należy użyć właściwości ApplicationView.Id lub metody ApplicationView.GetApplicationViewIdForWindow.
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
Widok główny
Pierwszy widok utworzony podczas uruchamiania aplikacji jest nazywany głównym widokiem . Ten widok jest przechowywany we właściwości CoreApplication.MainView, a jej właściwość IsMain ma wartość true. Nie utworzysz tego widoku; jest ona tworzona przez aplikację. Wątek widoku głównego służy jako menedżer aplikacji, a wszystkie zdarzenia aktywacji aplikacji trafiają do tego wątku.
Jeśli widoki pomocnicze są otwarte, okno widoku głównego może być ukryte — na przykład klikając przycisk Zamknij (x) na pasku tytułu okna — ale jego wątek pozostaje aktywny. Wywołanie Close w oknie widoku głównego powoduje wystąpienie błędu InvalidOperationException. (Użyj Application.Exit, aby zamknąć aplikację). Jeśli wątek widoku głównego zostanie zakończony, aplikacja zostanie zamknięta.
Widoki pomocnicze
Inne widoki, w tym wszystkie widoki tworzone przez wywołanie CreateNewView w kodzie aplikacji, są widokami pomocniczymi. Zarówno widok główny, jak i widoki pomocnicze są przechowywane w kolekcji CoreApplication.Views. Zazwyczaj widoki pomocnicze są tworzone w odpowiedzi na akcję użytkownika. W niektórych przypadkach system tworzy widoki pomocnicze dla aplikacji.
Uwaga / Notatka
Aby uruchomić aplikację w trybie kiosku
Przełączanie z jednego widoku na inny
Rozważ udostępnienie użytkownikowi sposobu na przejście z okna pomocniczego z powrotem do okna nadrzędnego. W tym celu użyj metody ApplicationViewSwitcher.SwitchAsync. Wywołasz tę metodę z wątku okna, z którego przechodzisz, i przekażesz identyfikator widoku okna, do którego przechodzisz.
await ApplicationViewSwitcher.SwitchAsync(viewIdToShow);
Jeśli używasz SwitchAsync, możesz wybrać, czy chcesz zamknąć okno początkowe i usunąć je z paska zadań, określając wartość ApplicationViewSwitchingOptions.