¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Información
El tema que ha solicitado se muestra abajo. Sin embargo, este tema no se encuentra en la biblioteca.

Cambios de API para Windows 8.1 (XAML)

Este documento enumera las eliminaciones de API, los cambios funcionales y las optimizaciones que se incorporaron en Windows 8.1.

Realizamos importantes cambios y optimizaciones para mejorar las aplicaciones en Windows 8.1. Estos incluyen cambios en el control de interfaz de usuario XAML, un nuevo modelo de tamaño de ventana, cambios en el perfil de .NET y más. Notarás muchas optimizaciones sin tener que cambiar el código, pero algunas mejoras sí necesitan cambios. Te recomendamos que te olvides de las API desusadas para poder obtener el mejor rendimiento de tu aplicación.

Para ver otros recursos de migración, consulta:

Importante  Para más información sobre los cambios en las API en Windows 8.1 relacionados con la programación con JavaScript e Internet Explorer, consulta el tema sobre cambios en API para Windows 8.1 (aplicaciones de la Tienda Windows con JavaScript y HTML).

Cambios que afectan a API específicas

En la siguiente tabla se enumeran las API que sufren cambios de comportamiento en Windows 8.1.

APIDescripción
ApplicationModel.Background namespace La infraestructura de tareas en segundo plano valida los parámetros iniciales. Para obtener más información, consulta la clase BackgroundTaskBuilder e Inicio rápido: creación y registro de una tarea en segundo plano.
ResourceLoader class La interfaz de usuario de aplicaciones de la Tienda Windows puede mostrarse en varios monitores.
ApplicationViewSwitcher.DisableShowingMainViewOnActivation method Las aplicaciones que crean varias ventanas básicas presentan la ventana básica en el momento de la activación. Si deseas obtener más información, consulta la muestra de varias vistas.
LanguageFontGroup class Puede ser que las fuentes que usaste en tus aplicaciones de la Tienda Windows hayan cambiado en Windows 8.1.
DisplayProperties class Algunos de los miembros de DisplayProperties se desusaron, pero se agregaron miembros nuevos. Este cambio puede generar errores y advertencias de compilación si usas esta API.
MediaCapture class Este cambio implica la grabación de audio de alta latencia y baja latencia.
PlayToConnectionErrorEventArgs class Cuando se producen errores en las aplicaciones que usan el objeto PlayToConnectionErrorEventArgs para "Reproducir en", es difícil solucionar el problema porque la enumeración PlayToConnectionError no es informativa.
StorageFile.GetThumbnailAsync method En Windows 8.1, este método puede devolver miniaturas de cualquier tamaño.
CoreDispatcher.ProcessEvents method Llamar a este método recursivamente puede provocar errores en la aplicación. Ten en cuenta además que solo debes llamar a CoreDispatcher.ProcessEvents desde el subproceso en que se creó CoreWindow. Si llamas a este método desde otros subprocesos, se producirá un error explícito.
CoreDispatcher.AcceleratorKeyActivated event La navegación de fichas con foco del teclado en Windows 8.1 irá al objeto correcto de la interfaz de usuario.
PropertyAnimation class La animación de propiedades en Windows 8.1 es más sencilla cuando la aplicación pasa de una animación a otra. Este cambio también afecta al método Storyboard.Begin.
Application.LoadComponent(Object, Uri) method En Windows 8.1, los diccionarios de recursos no se crean completamente durante el marcado.
FlipView.UseTouchAnimationsForAllNavigation property En Windows 8.1, el movimiento entre elemento se animará en todos los casos y no simplemente con el toque.
Control.Focus method La configuración del foco mediante programación ha cambiado. Para obtener más información, consulta FocusState property.
FrameworkElement.LayoutUpdated event Si una aplicación adjunta dos escuchas y quita una, solo se quita esa escucha.
ItemsPresenter.Header property Las propiedades VerticalAlignment y HorizontalAlignment se aceptan si se establecen en el encabezado. Este cambio también afecta a la ItemsPresenter.HeaderTemplate property.
FrameworkElement.BaseUri property Puede resolver URI específicos de archivos para elementos de plantillas definidos por XAML.
AutomationPeer.GetPatternCore method Los controles pueden suministrar su propio comportamiento de mismo nivel de elementos para la automatización de interfaz de usuario de Microsoft.
UIElement.ManipulationMode property La ManipulationModes enumeration permite combinar el System con otros valores.
UIElement.ManipulationStarting event El ManipulationStarting event se activa correctamente. Este cambio también afecta a los eventos UIElement.ManipulationCompleted y Control.OnManipulationStarting.
UIElement.PointerEntered event El PointerEntered event ahora se activa correctamente. Este cambio también afecta al UIElement.PointerExited event.
UIElement.PointerWheelChanged event La manipulación directa agregó compatibilidad con los gestos de panel táctil.
UIElement.RightTapped event Los valores de posición X/Y de datos de eventos están ordenados correctamente en Windows 8.1. Este cambio también afecta a los métodos Control.OnRightTapped y RightTappedRoutedEventArgs.GetPosition.
VisualTransition class Las animaciones de transición XAML desactivan automáticamente en Windows 8.1 las animaciones que distraen.
ListView class Los controles ListView y GridView de XAML muestran una lista de elementos y permiten que los usuarios seleccionen elementos.
WebView class Consulte el tema sobre los cambios de comportamiento importantes en el control WebView.
ComboBox.MaxDropDownHeight property Esta propiedad ya no se omite en Windows 8.1.
MediaElement class El diseño de MediaElement es como el de otros controles XAML en Windows 8.1.
Image.ImageOpened event A partir de Windows 8.1, XAML recargará las imágenes automáticamente cuando cambie la escala de visualización. Este cambio también afecta a ImageFailed event.
TextBox.IsColorFontEnabled property Los controles de texto de las aplicaciones no representarán fuentes de varios colores hasta que vuelvan a compilarse en Windows 8.1. Este cambio también afecta a las propiedades TextBlock.IsColorFontEnabled, RichEditBox.IsColorFontEnabled y RichTextBlock.IsColorFontEnabled.
ImageBrush.ImageSource property Con la propiedad ImageBrush.ImageSource, las aplicaciones de Windows 8.1 resolverán los URI en la ubicación correcta del paquete de la aplicación.
VisualTreeHelper class En Windows 8.1, la API de VisualTreeHelper valida que el autor de la llamada esté llamando en el subproceso correcto.
Storyboard.GetCurrentState method Este método devuelve el valor correcto en Windows 8.1 para casos en los que las animaciones usan un valor BeginTime.
BitmapImage.UriSource property La validación de URI se ha quitado del establecedor en Windows 8.1.

 

Mejoras en el rendimiento

En la siguiente tabla se enumeran las mejoras en el rendimiento para Windows 8.1.

CambioDescripción
Mejora en el rendimiento de referencias de C#Ha aumentado la velocidad de recolección de elementos no utilizados en aplicaciones de la Tienda Windows. Para obtener más información, consulta Mejorar el rendimiento de la recolección de elementos no utilizados.
Reinicio rápido después de cerrarLas aplicaciones tienen cinco segundos como máximo para finalizar, lo que permite reiniciarlas rápidamente.
Característica Exponer todos los erroresLos errores generados en los controladores de eventos ahora se propagan.
Baja prioridad de la suspensiónPara mejorar la capacidad de respuesta del sistema, las aplicaciones tienen acceso de prioridad baja a los recursos en suspensión. Para obtener más información, consulta el tema sobre cómo suspender una aplicación.
Modelo de tamaño de ventanaAgregamos un nuevo modelo de tamaño de ventana en Windows 8.1 para admitir escenarios multitarea más enriquecidos.
Corrección de la navegación con foco en controles de lista XAML Cuando el usuario establece el foco del teclado en el control de lista, el foco se dirigirá al elemento correcto. Para obtener más información, consulta FlipViewItem class.
Mejoras en el rendimiento de ListView y GridViewSe han quitado todos los objetos UIElement de las plantillas de control predeterminadas de GridViewItem y ListViewItem para mejorar considerablemente el rendimiento. Para más información, consulta Mejorar el tiempo de inicio de las aplicaciones con controles GridView y ListView.
Mejora de la seguridad webAunque las aplicaciones creadas para Windows 8 pueden incluir URI http y https en los URI de contenido de la aplicación, las aplicaciones creadas para Windows 8.1 pueden incluir otros URI https, excepto en las ContentUriRules dinámicas que se especifican en su archivo AppxManifest.xml. Para obtener más información, consulta el tema donde se explica que Windows 8.1 solo admite URI https y no URI http en la referencia de compatibilidad de Windows.
ItemsControl.PrepareContainerForItemOverride method La propiedad Content se establecerá en el valor correcto cuando el tiempo de CPU esté disponible.
VirtualSurfaceImageSource constructor El tamaño máximo de validación de parámetros ha cambiado de 100.000.000 s 17.000.000.

 

Mitigación de los cambios

En la siguiente tabla se enumeran los cambios que pueden afectar a la ejecución de tu aplicación en Windows 8.1.

CambioDescripción
LayoutAwarePage provoca la interrupción de las aplicacionesLa clase LayoutAwarePage ya no se incluye en las plantillas de Microsoft Visual Studio 2013.
Biblioteca de clases portableLa Biblioteca de clases portable no está disponible en Microsoft Visual Studio Express 2013 para Windows.
Cambios en las bibliotecas de Visual CLa biblioteca de Visual C presenta cambios en assert() y exit(). Para obtener más información, consulta la sección de observaciones de pruebas del Kit para la certificación de aplicaciones en Windows.
Faltan partes en la vista Controls al filtrarlaSe han agregado elementos a la vista de control de automatización de la interfaz de usuario, en Windows 8.1.
Eventos de Seguimiento de eventos para Windows (ETW)Ya no se generan eventos ETW en Windows 8.1.

 

Descripción de los cambios

Faltan partes en la vista Controls al filtrarla

No se muestran partes del árbol de elementos XAML en la vista de control filtrada en el árbol de automatización de la interfaz de usuario (UIA). En Windows 8.1, lo hemos corregido incluyendo más elementos en la vista de control, aunque algunos elementos que se muestran en la vista no deberían estar allí. La nueva propiedad AccessibilityView adjunta se puede establecer en elementos XAML para permitir a los desarrolladores de aplicaciones especificar los elementos que no deberían estar en la vista de control. Hemos actualizado las plantillas de control XAML integradas en Windows 8.1 para que usen la nueva propiedad como corresponde. Si una aplicación de Windows 8 tiene controles personalizados, o plantillas personalizadas para los controles integrados, estos deben establecer la nueva propiedad.

Eventos de Seguimiento de eventos para Windows (ETW)

En Windows 8, XAML sigue los eventos ETW en su compositor. En Windows 8.1, reemplazamos ese compositor dentro del proceso con DirectComposition, de modo que ya no se generen eventos ETW. No consideres la adición o eliminación de seguimientos como un problema de compatibilidad.

LayoutAwarePage provoca la interrupción de las aplicaciones

En Windows 8, las plantillas de Microsoft Visual Studio definen la clase LayoutAwarePage para que administre los estados visuales basados en ApplicationViewState. En Windows 8.1, ApplicationViewState ha dejado de utilizarse y LayoutAwarePage ya no se incluye en las plantillas de Visual Studio para las aplicaciones de la Tienda Windows. Seguir usando LayoutAwarePage puede interrumpir la aplicación. Para corregir esto, vuelve a escribir la vista para acomodar la nueva resolución mínima y crear eventos basados en el tamaño de la ventana. Si actualizas tu aplicación para diferentes tamaños, debes controlar el evento Window.SizeChanged para adaptar la interfaz de usuario de tu aplicación al nuevo tamaño. Te recomendamos que dejes de usar la clase LayoutAwarePage y que heredes las clases directamente de la clase Page.

Aquí te mostramos cómo dejar de usar LayoutAwarePage:


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);
     }
 }


Biblioteca de clases portable

La Biblioteca de clases portable solo está disponible para Microsoft Visual Studio Professional 2013. No está disponible en Visual Studio Express 2013 para Windows.

Mejoras en el rendimiento de ListView y GridView

Clase GroupStyle

Tres propiedades de la clase GroupStyle para ListView y GridView se desusan y se omiten. Las propiedades Panel, ContainerStyle y ContainerStyleSelector de GroupStyle ya no se aceptan cuando ItemsPanel es ItemsStackPanel. ListView y GridView se ordenarán como una lista tradicional: de arriba a abajo. De esta forma, el diseño o el aspecto de los elementos dentro de un grupo puede cambiar en una aplicación de Windows 8 que se recompila para Windows 8.1 si la aplicación no establece ItemsPanel de forma explícita, pero establece Panel, ContainerStyle y ContainerStyleSelector. Una aplicación que depende de la estructura interna y de los tipos de objetos ListView predeterminados puede bloquearse porque el tipo de ItemsPanel cambiará y GroupItems no se creará cuando GroupStyle.Panel es ItemsStackPanel. Este bloqueo probablemente se produzca al consultar el árbol visual.

Para evitarlo, vuelve a establecer ItemsPanel en el panel de Windows 8 (VirtualizingStackPanel) o quita las hipótesis sobre la estructura del árbol visual.

Propiedad ItemsPanel

La propiedad ItemsPanel predeterminada se cambió en Windows 8.1. En Windows 8, la propiedad ItemsPanel predeterminada para ListView es VirtualizingStackPanel y la propiedad ItemsPanel predeterminada para GridView es WrapGrid. En Windows 8.1, estas propiedades predeterminadas ahora son ItemsStackPanel para ListView e ItemsWrapGrid para GridView. Este cambio puede ocasionar bloqueos al consultar el árbol visual. La solución alternativa consiste en volver a establecer la propiedad ItemsPanel en el valor predeterminado de Windows 8.

Reinicio rápido después de cerrar

En Windows 8.1, si el usuario cierra una aplicación y la reinicia de inmediato, esta dispone de hasta cinco segundos para completar el proceso de finalización antes de reiniciarse. En Windows 8, la aplicación finaliza inmediatamente al reiniciarse.

Característica Exponer todos los errores

En Windows 8.1, los errores generados en controladores de eventos ahora se propagan. Los errores que no se controlan desencadenan la finalización de la aplicación. Antes de que esto suceda, se desencadena el evento CoreApplication::UnhandledErrorDetected para dar al desarrollador la oportunidad de controlar el error sin que finalice la aplicación. Ten en cuenta que este evento no reemplaza el evento UnhandledException de XAML. Los errores que no se controlan en las aplicaciones de la Tienda Windows con XAML generan ambos eventos y el desarrollador es libre de usar el que se ajuste mejor a la aplicación.

Modelo de tamaño de ventana

Agregamos un nuevo modelo de tamaño de ventana en Windows 8.1 para admitir escenarios multitarea más enriquecidos. Se eliminó el concepto de estados de vista discretos y ya no es necesario el estado acoplado. En su lugar, se puede cambiar el tamaño de las aplicaciones de forma continua y reducirlas hasta el tamaño mínimo. Las aplicaciones pueden tener un ancho mínimo de 500 px o de 320 px. De manera predeterminada, el tamaño mínimo de una aplicación es de 500 px.

La propiedad ApplicationView.Value y el método ApplicationView.TryUnsnap de Windows 8 se desusan, así que recibirás advertencias del compilador si tu aplicación los usa. Las aplicaciones deben registrarse para el evento de cambio de tamaño de ventana para saber cuándo actualizar el diseño. Sin embargo, en lugar de llamar a ApplicationView.Value para averiguar en qué estado de vista está la aplicación, usa las propiedades Window.Current y Window.Bounds para obtener el tamaño general de la ventana, o las propiedades ApplicationView.GetForCurrentView y ApplicationView.Orientation para obtener la orientación. En Windows 8.1, el diseñador de la aplicación es el que decide las consultas de medios y los umbrales de tamaño de ventana que utilizará la aplicación para actualizar el diseño.

Estas son algunas maneras posibles de portar el código.

Tamaño de ventana general de visualización:

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
}


Orientación de visualización:

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
    }
}


Temas relacionados

Redestinar tu aplicación de la Tienda Windows a Windows 8.1
Muestras actualizadas
Programación con DirectX
Cambios en las API para Windows 8.1 (aplicaciones de la Tienda Windows con JavaScript y HTML)

 

 

Mostrar:
© 2015 Microsoft