Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

API-Änderungen für Windows 8.1 (XAML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

In diesem Dokument werden die mit Windows 8.1 eingeführten API-Entfernungen, Funktionsänderungen und Optimierungen aufgeführt.

Es wurden erhebliche Änderungen und Optimierungen vorgenommen, um die Apps in Windows 8.1 zu verbessern. Zu diesen Optimierungen gehören Änderungen am UI-XAML-Steuerelement, ein neues Fenstergrößenmodell, .NET-Profiländerungen und mehr. Viele Optimierungen treten ohne Codeänderungen in Kraft, einige erfordern jedoch Änderungen. Es wird empfohlen, auf veraltete APIs zu verzichten, um die beste App-Leistung zu erzielen.

Weitere Portierungsressourcen finden Sie unter:

Wichtig  Weitere Informationen zu den API-Änderungen in Windows 8.1 im Zusammenhang mit der JavaScript-Programmierung und Internet Explorer finden Sie unter API-Änderungen für Windows 8.1 (Windows Store-Apps mit JavaScript und HTML).
 

Änderungen mit Auswirkungen auf bestimmte APIs

In der folgenden Tabelle sind die APIs aufgeführt, die unter Windows 8.1 Verhaltensänderungen aufweisen.

APIBeschreibung
ApplicationModel.Background namespace Von der Infrastruktur für Hintergrundaufgaben werden Parameter vorher überprüft. Weitere Informationen finden Sie unter der BackgroundTaskBuilder-Klasse und Schnellstart: Erstellen und Registrieren einer Hintergrundaufgabe.
ResourceLoader class Die Windows Store-App-UI kann auf mehreren Monitoren angezeigt werden.
ApplicationViewSwitcher.DisableShowingMainViewOnActivation method Für Apps, bei denen mehrere Hauptfenster (core windows) erstellt werden, wird das Hauptfenster bei der Aktivierung angezeigt. Weitere Informationen finden Sie im Beispiel für mehrere Ansichten.
LanguageFontGroup class Die Schriftarten, die Sie in Ihren Windows Store-Apps verwendet haben, wurden für Windows 8.1 möglicherweise geändert.
DisplayProperties class Einige der DisplayProperties-Member sind veraltet, aber es wurden neue hinzugefügt. Diese Änderung kann beim Erstellen zu Fehlern und Warnungen führen, wenn Sie diese API nutzen.
MediaCapture class Diese Änderung umfasst eine Audioaufzeichnung mit hoher Latenz und niedriger Latenz.
PlayToConnectionErrorEventArgs class Bei Apps, die das PlayToConnectionErrorEventArgs-Objekt für "Wiedergeben auf"-Fehler verwenden, ist die Problembehandlung schwierig, da die PlayToConnectionError-Enumeration nicht aussagekräftig ist.
StorageFile.GetThumbnailAsync method In Windows 8.1 können mit dieser Methode Miniaturansichten jeder Größe zurückgegeben werden.
CoreDispatcher.ProcessEvents method Wenn diese Methode rekursiv aufgerufen wird, tritt für die App möglicherweise ein Fehler auf. Darüber hinaus darf CoreDispatcher.ProcessEvents nur über den Thread aufgerufen werden, in dem CoreWindow erstellt wurde. Wird die Methode über einen anderen Thread aufgerufen, tritt ein expliziter Fehler auf.
CoreDispatcher.AcceleratorKeyActivated event Bei der TAB-Navigation mit Tastaturfokus in Windows 8.1 wird in der UI auf das richtige Objekt zugegriffen.
PropertyAnimation class Die Animation von Eigenschaften in Windows 8.1 verläuft reibungsloser, wenn Apps von einer Animation zur anderen wechseln. Diese Änderung wirkt sich auch auf die Storyboard.Begin-Methode aus.
Application.LoadComponent(Object, Uri) method In Windows 8.1 werden Ressourcenwörterbücher während des Markupvorgangs nicht vollständig erstellt.
FlipView.UseTouchAnimationsForAllNavigation property Unter Windows 8.1 wird der Wechsel zwischen Elementen für alle Fälle animiert, und nicht nur für Touch.
Control.Focus method Das Festlegen des programmgesteuerten Fokus wurde geändert. Weitere Informationen finden Sie unter FocusState property.
FrameworkElement.LayoutUpdated event Wenn eine App zwei Listener anfügt und einen davon entfernt, wird nur dieser Listener entfernt.
ItemsPresenter.Header property Die Eigenschaften VerticalAlignment und HorizontalAlignment werden berücksichtigt, wenn sie im Header festgelegt werden. Diese Änderung wirkt sich auch auf das ItemsPresenter.HeaderTemplate property aus.
FrameworkElement.BaseUri property Dateispezifische URIs für XAML-definierte Vorlagenteile können aufgelöst werden.
AutomationPeer.GetPatternCore method Steuerelemente können ihr eigenes Peerverhalten für Elemente für die Microsoft-Benutzeroberflächenautomatisierung bereitstellen.
UIElement.ManipulationMode property Die ManipulationModes enumeration ermöglicht die Kombination von System mit anderen Werten.
UIElement.ManipulationStarting event Das ManipulationStarting event wird ordnungsgemäß ausgelöst. Diese Änderung wirkt sich auch auf die Ereignisse UIElement.ManipulationCompleted und Control.OnManipulationStarting aus.
UIElement.PointerEntered event Das PointerEntered event wird jetzt ordnungsgemäß ausgelöst. Diese Änderungen wirken sich auch auf das UIElement.PointerExited event aus.
UIElement.PointerWheelChanged event Die direkte Manipulation verfügt über Unterstützung für Touchpadgesten.
UIElement.RightTapped event Die X/Y-Positionswerte aus Ereignisdaten dieses Ereignisses werden unter Windows 8.1 richtig sortiert. Diese Änderung wirkt sich auch auf die Methoden Control.OnRightTapped und RightTappedRoutedEventArgs.GetPosition aus.
VisualTransition class Bei XAML-Übergangsanimationen werden ablenkende Animationen unter Windows 8.1 automatisch deaktiviert.
ListView class Für die XAML-Steuerelemente ListView und GridView wird eine Liste mit Elementen angezeigt, und Benutzer können Elemente auswählen.
WebView class Informationen finden Sie im Thema zu den signifikanten Verhaltensänderungen am WebView-Steuerelement.
ComboBox.MaxDropDownHeight property Diese Eigenschaft wird unter Windows 8.1 nicht mehr ignoriert.
MediaElement class Das MediaElement-Layout verhält sich wie andere XAML-Steuerelemente unter Windows 8.1.
Image.ImageOpened event Ab Windows 8.1 lädt XAML Bilder automatisch neu, wenn sich die Anzeigeskala ändert. Diese Änderung wirkt sich auch auf das ImageFailed event aus.
TextBox.IsColorFontEnabled property Für Textsteuerelemente können mehrfarbige Schriftarten erst gerendert werden, wenn sie in Windows 8.1 neu erstellt werden. Diese Änderung wirkt sich auch auf die Eigenschaften TextBlock.IsColorFontEnabled, RichEditBox.IsColorFontEnabled und RichTextBlock.IsColorFontEnabled aus.
ImageBrush.ImageSource property Mit der ImageBrush.ImageSource-Eigenschaft lösen Apps in Windows 8.1 die URIs am richtigen Speicherort des App-Pakets auf.
VisualTreeHelper class In Windows 8.1 wird mit der VisualTreeHelper-API überprüft, ob der Aufrufer den richtigen Thread aufruft.
Storyboard.GetCurrentState method Diese Methode gibt den richtigen Wert unter Windows 8.1 für Szenarien zurück, in denen Animationen einen BeginTime-Wert verwenden.
BitmapImage.UriSource property Die URI-Überprüfung wurde in Windows 8.1 aus dem Setter entfernt.

 

Verbesserungen bei der Leistung

In der folgenden Tabelle sind die Leistungsverbesserungen für Windows 8.1 aufgeführt.

ÄnderungBeschreibung
Leistungsverbesserung der C#-ReferenzenDie Geschwindigkeit der Garbage Collection in Windows Store-Apps wurde erhöht. Weitere Informationen finden Sie unter Verbessern der Leistung der Garbage Collection.
Schneller Neustart nach dem SchließenApps erhalten bis zu fünf Sekunden Zeit für das Schließen, sodass sie schnell neu gestartet werden können.
Feature zum Anzeigen aller FehlerFehler, die in Ereignishandlern ausgelöst werden, werden jetzt weitergegeben.
Anhalten der App bei niedriger PrioritätUm die Reaktionsfähigkeit des Systems zu verbessern, erhalten die Apps auf angehaltene Ressourcen einen Zugriff mit geringerer Priorität. Weitere Informationen finden Sie unter So wird's gemacht: Anhalten einer App.
FenstergrößenmodellFür Windows 8.1 wurde ein neues Fenstergrößenmodell übernommen, das umfassendere Multitaskingszenarios unterstützt.
Korrigieren der Fokusnavigation in den Steuerelementen von XAML-Listen Wenn ein Benutzer den Tastaturfokus per TAB-Navigation auf das Listensteuerelement festlegt, erhält das richtige Element den Fokus. Weitere Informationen finden Sie unter FlipViewItem class.
Leistungsverbesserungen für ListView und GridViewAlle UIElement-Objekte in den Standardsteuerelementvorlagen für GridViewItem und ListViewItem wurden entfernt, um die Leistung deutlich zu steigern. Weitere Informationen finden Sie unter Verbessern der Startzeit von Apps mit GridView- und ListView-Steuerelementen.
Verbessern der WebsicherheitFür Windows 8 entwickelte Apps können http- und https-URIs in den Anwendungsinhalts-URIs enthalten. Für Windows 8.1 entwickelte Apps hingegen dürfen nur https-URIs beinhalten. Eine Ausnahme stellen dynamische ContentUriRules dar, die in der Datei AppxManifest.xml angegeben sind. Weitere Informationen finden Sie unter Unter Windows 8.1 sind nur https-URIs zulässig, keine http-URIs im Kompatibilitäts-Cookbook für Windows.
ItemsControl.PrepareContainerForItemOverride method Die Content-Eigenschaft wird auf den richtigen Wert festgelegt, wenn die CPU-Zeit verfügbar ist.
VirtualSurfaceImageSource constructor Die maximale Größe für die Parameterüberprüfung wurde von 100.000.000 in 17.000.000 geändert.

 

Mindern der Auswirkungen von Änderungen

In der folgenden Tabelle sind die Änderungen aufgeführt, die sich auf eine unter Windows 8.1 ausgeführte App auswirken können.

ÄnderungBeschreibung
LayoutAwarePage-Klasse führt zum Anhalten von AppsDie LayoutAwarePage-Klasse ist nicht mehr in Microsoft Visual Studio 2013-Vorlagen enthalten.
Portable KlassenbibliothekDie portable Klassenbibliothek ist für Microsoft Visual Studio Express 2013 für Windows nicht verfügbar.
Änderungen an der Visual C-BibliothekDie Visual C-Bibliothek enthält Änderungen von assert() und exit(). Weitere Informationen finden Sie im Abschnitt mit den Anmerkungen unter Tests im Windows-Zertifizierungskit für Apps.
Fehlende Teile in der Steuerelementansicht nach dem FilternElemente werden unter Windows 8.1 der Benutzeroberflächenautomatisierungs-Steuerelementansicht hinzugefügt.
Ereignisse der Ereignisablaufverfolgung von Windows (Event tracing for Windows, ETW)ETW-Ereignisse werden unter Windows 8.1 nicht mehr ausgelöst.

 

Beschreibungen der Änderungen

Fehlende Teile in der Steuerelementansicht nach dem Filtern

Teile der XAML-Elementstruktur werden in der gefilterten Steuerelementansicht des Benutzeroberflächenautomatisierungs-Baums nicht angezeigt. Dies wurde in Windows 8.1 behoben, indem mehr Elemente in die Steuerelementansicht eingeschlossen wurden. Es werden jedoch einige Elemente in der Steuerelementansicht angezeigt, die nicht vorhanden sein sollten. Die neue angefügte Eigenschaft AutomationProperties.AccessibilityView kann für XAML-Elemente festgelegt werden, sodass der App-Entwickler diejenigen Elemente angeben kann, die nicht in der Steuerelementansicht enthalten sein sollten. Die integrierten XAML-Steuerelementvorlagen in Windows 8.1 wurden so aktualisiert, dass sie gegebenenfalls die neue Eigenschaft verwenden. Wenn eine Windows 8-App über benutzerdefinierte Steuerelemente oder Vorlagen für die integrierten Steuerelemente verfügt, müssen diese auf die neue Eigenschaft festgelegt werden.

Ereignisse der Ereignisablaufverfolgung von Windows (Event tracing for Windows, ETW)

In Windows 8 verfolgt XAML die ETW-Ereignisse im Kompositor. In Windows 8.1 wird dieser prozessinterne Kompositor durch DirectComposition ersetzt, sodass diese ETW-Ereignisse nicht mehr ausgelöst werden. Das Hinzufügen oder Entfernen von Ablaufverfolgungen sollte nicht als Kompatibilitätsproblem betrachtet werden.

Die LayoutAwarePage-Klasse führt zum Anhalten von Apps.

Unter Windows 8 definieren Microsoft Visual Studio-Vorlagen die LayoutAwarePage-Klasse zum Verwalten der visuellen Zustände auf Basis von ApplicationViewState. In Windows 8.1 ist ApplicationViewState veraltet, und die LayoutAwarePage-Klasse ist in den Visual Studio-Vorlagen für Windows Store-Apps nicht mehr enthalten. Wenn Sie den LayoutAwarePage-Code weiterhin verwenden, kann dies zum Anhalten Ihrer App führen. Schreiben Sie zum Beheben dieses Problems Ihre Ansicht um, um die neue Mindestauflösung zu berücksichtigen, und erstellen Sie Ereignisse basierend auf der Fenstergröße. Wenn Sie die App auf verschiedene Größen aktualisieren, müssen Sie das Window.SizeChanged-Ereignis behandeln, um die UI Ihrer App an die neue Größe anzupassen. Es wird empfohlen, die LayoutAwarePage-Klasse nicht mehr zu verwenden, sondern die Klassen direkt von der Page-Klasse zu erben.

So beenden Sie die Verwendung der LayoutAwarePage-Klasse:


protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    this.Loaded += PageLoaded;
    this.Unloaded += PageUnloaded;
 }

 private void PageUnloaded(object sender, RoutedEventArgs e)
 {
     Window.Current.SizeChanged -= Window_SizeChanged;
 }

 private void PageLoaded(object sender, RoutedEventArgs e)
 {
     Window.Current.SizeChanged += Window_SizeChanged;
 }

 private void Window_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
 {
     if (e.Size.Width <= 500)
     {
     //VisualStateManager.GoToState(this, state.State, transitions);
     }
     else if (e.Size.Height > e.Size.Width)
     {
     //VisualStateManager.GoToState(this, state.State, transitions);
     }
     else
     {
     //VisualStateManager.GoToState(this, state.State, transitions);
     }
 }


Portable Klassenbibliothek

Die portable Klassenbibliothek ist nur für Microsoft Visual Studio Professional 2013 verfügbar. Sie ist in Visual Studio Express 2013 für Windows nicht verfügbar.

Leistungsverbesserungen für ListView und GridView

GroupStyle-Klasse

Drei Eigenschaften der GroupStyle Klasse für ListView und GridView sind veraltet und werden ignoriert. Die Eigenschaften Panel, ContainerStyle und ContainerStyleSelector von GroupStyle werden nicht mehr beachtet, wenn es sich bei ItemsPanel um ItemsStackPanel handelt. ListView und GridView werden wie eine herkömmliche Liste dargestellt – von oben nach unten. Daher kann sich in einer Windows 8-App das Layout oder Erscheinungsbild der Elemente in einer für Windows 8.1 neu kompilierten Gruppe ändern, wenn die App nicht ausdrücklich ItemsPanel, sondern Panel, ContainerStyle und ContainerStyleSelector festlegt. Eine App, die von der internen Struktur und den ListView-Standardobjekttypen abhängig ist, kann abstürzen, da sich der Typ von ItemsPanel ändert und GroupItems nicht erstellt wird, wenn GroupStyle.Panel ein ItemsStackPanel ist. Dieser Absturz erfolgt am wahrscheinlichsten beim Durchlaufen der visuellen Struktur.

Vermeiden Sie dies, indem Sie ItemsPanel auf den Windows 8-Bereich (VirtualizingStackPanel) zurücksetzen oder Annahmen über die visuelle Struktur entfernen.

ItemsPanel-Eigenschaft

Die Standardeigenschaft ItemsPanel wurde für Windows 8.1 geändert. In Windows 8 war die Standardeigenschaft ItemsPanel für ListView VirtualizingStackPanel, und die Standardeigenschaft ItemsPanel für GridView war WrapGrid. In Windows 8.1 gelten als Standard nun ItemsStackPanel für ListView und ItemsWrapGrid für GridView. Diese Änderung kann zu Abstürzen beim Durchlaufen der visuellen Struktur führen. Als Umgehung kann die ItemsPanel-Eigenschaft wieder auf den Windows 8-Standardwert zurückgesetzt werden.

Schneller Neustart nach dem Schließen

Wenn der Benutzer in Windows 8.1 eine App schließt und unmittelbar neu startet, kann die geschlossene App vor dem Neustart bis zu fünf Sekunden für die Beendigung aufwenden. In Windows 8 wird die App beim Neustart sofort beendet.

Feature zum Anzeigen aller Fehler

In Windows 8.1 werden die in Ereignishandlern ausgelösten Fehler nun weitergegeben. Nicht behandelte Fehler lösen das Beenden der Anwendung aus. Vor dem Beenden wird das CoreApplication::UnhandledErrorDetected-Ereignis ausgelöst, sodass der Entwickler den Fehler ohne Beenden behandeln kann. Beachten Sie, dass dieses Ereignis nicht das XAML-UnhandledException-Ereignis ersetzt. Nicht behandelte Fehler in Windows Store-Apps mit XAML lösen beide Ereignisse aus und der Entwickler kann die für die App besser geeignete auswählen.

Fenstergrößenmodell

Für Windows 8.1 wurde ein neues Fenstergrößenmodell übernommen, das umfassendere Multitaskingszenarios unterstützt. Das Konzept unterschiedlicher Ansichtszustände wurde abgeschafft, und der angedockte Zustand ist nicht mehr erforderlich. Stattdessen kann die Größe der Apps fortlaufend bis hin zu ihrer Mindestgröße eingestellt werden. Eine App kann über eine Mindestbreite von 500 oder 320 Pixeln verfügen. In der Standardeinstellung beträgt die Mindestbreite einer App 500 Pixel.

Die ApplicationView.Value-Eigenschaft aus Windows 8 sowie die ApplicationView.TryUnsnap-Methode sind veraltet, sodass Compilerwarnungen angezeigt werden, wenn die App diese verwendet. Eine App sollte sich für das Fenstergrößenänderungs-Ereignis registrieren, damit das Layout zum richtigen Zeitpunkt aktualisiert wird. Rufen Sie nicht ApplicationView.Value auf, um den Ansichtszustand der App zu ermitteln, sondern verwenden Sie die Window.Current- und die Window.Bounds-Eigenschaft, um die allgemeine Fenstergröße abzurufen, bzw. die ApplicationView.GetForCurrentView- und die ApplicationView.Orientation-Eigenschaft, um die Ausrichtung abzurufen. In Windows 8.1 kann der App-Entwickler entscheiden, welchen Fenstergrößen-Schwellenwerten und Medienabfragen die App beim Aktualisieren des App-Layouts unterliegt.

Im Folgenden finden Sie einige Methoden für die Codeportierung.

Anzeigen der allgemeinen Fenstergröße:

Windows 8

private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e) {
    // Get view state
    ApplicationViewState currentViewState = ApplicationView.Value;
 
    if (currentViewState == ApplicationViewState.FullScreenLandscape) {
       // Full screen Landscape layout
    }
    else if (currentViewState == ApplicationViewState.FullScreenPortrait) {
       // Full screen Portrait layout
    }
    else if (currentViewState == ApplicationViewState.Filled) {
       // Filled layout
    }
    else if (currentViewState == ApplicationViewState.Snapped) {
       // Snapped layout
    }
}


Windows 8.1

private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e) {
        // Get window size
        var WindowWidth = Window.Current.Bounds.Width;
 
        // App code to change layout based on window width
}


Anzeigeausrichtung:

Windows 8

private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e) {
    // Get view state
    ApplicationViewState currentViewState = ApplicationView.Value;
 
    if (currentViewState == ApplicationViewState.FullScreenLandscape || currentViewState == ApplicationViewState.Filled) {
       // Landscape layouts
    }
    else if (currentViewState == ApplicationViewState.FullScreenPortrait) {
       // Portrait layouts
    }
}


Windows 8.1

private void WindowSizeChanged(object sender, WindowSizeChangedEventArgs e) {
    // Get window orientation
    ApplicationViewOrientation winOrientation = ApplicationView.GetForCurrentView().Orientation;
 
    if (winOrientation == ApplicationViewOrientation.Landscape) {
       // Landscape layouts
    }
    else if (winOrientation == ApplicationViewOrientation.Portrait) {
       // Portrait layouts
    }
}


Verwandte Themen

Neuzuweisen Ihrer Windows Store-Apps zu Windows 8.1
Aktualisierte Beispiele
DirectX-Programmierung
API-Änderungen in Windows 8.1 (Windows Store-Apps mit JavaScript und HTML)

 

 

Anzeigen: