Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Novedades de WPF versión 4.5

Las naves de WPF 4,5 con Ribbon controlan que hospeda una barra de herramientas de acceso rápido, un menú de aplicación, y pestañas. Para obtener más información, vea Información general sobre la cinta de opciones.

La virtualización de la interfaz de usuario aparece cuando un subconjunto de elementos de (UI) de se representa la interfaz de usuario de un número mayor de elementos de datos basándose en los elementos que están visibles en la pantalla. VirtualizingPanel define la propiedad asociada IsVirtualizingWhenGrouping que habilita la virtualización de la interfaz de usuario para los datos agrupados. Para obtener más información sobre los datos de agrupación, vea Cómo: Ordenar y agrupar los datos Mediante una vista en XAML. Para obtener más información sobre la virtualización de datos agrupados, vea la propiedad asociada IsVirtualizingWhenGrouping .

  1. Puede especificar si VirtualizingPanel, como VirtualizingStackPanel, muestra elementos parciales mediante la propiedad asociada ScrollUnit . Si ScrollUnit se establece en Item, VirtualizingPanel mostrará sólo los elementos que están completamente visible. Si ScrollUnit se establece en Pixel, VirtualizingPanel puede mostrar elementos parcialmente visible.

  2. Puede especificar el tamaño de caché antes y después de la ventanilla cuando VirtualizingPanel está virtualizar mediante la propiedad asociada CacheLength . Caché es la cantidad de espacio encima o debajo de la ventanilla donde los elementos no se virtualizan. Si utiliza la memoria caché evitar generar elementos de interfaz de usuario como se desplazan en la vista puede mejorar el rendimiento. La memoria caché se rellena con una prioridad más baja de para no esté responde durante la operación. La propiedad de VirtualizingPanel.CacheLengthUnit determina la unidad de medida utilizada por VirtualizingPanel.CacheLength.

Puede utilizar las propiedades estáticas como origen de un enlace de datos. El motor de enlace de datos reconoce cuando cambie el valor de propiedad si se produce un evento estático. Por ejemplo, si la clase SomeClass define MyPropertypropiedad denominada estático, SomeClass puede definir un evento estático que se provoca cuando el valor de MyProperty cambia. El evento estático puede utilizar cualquiera de las signaturas siguientes.

  • public static event EventHandler MyPropertyChanged;

  • public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

Observe que en el primer caso, expuestos por la clase un evento estático denominado PropertyNameChanged que pasa EventArgs el controlador de eventos. En el segundo, la clase expone un evento estático denominado StaticPropertyChanged que pasa PropertyChangedEventArgs el controlador de eventos. Una clase que implementa la propiedad estática puede elegir para generar notificaciones de propiedad- cambios mediante cualquier método.

WPF te permite tener acceso y modificar las colecciones de datos en subprocesos (hilos) distintos del que creó la colección. Esto te permite utilizar un subproceso de fondo para recibir datos de un origen externo, como una base de datos, y visualizar los datos en el subproceso de la interfaz de usuario. Mediante otro subproceso para modificar la colección, la interfaz de usuario permanece receptiva a la interacción del usuario.

La interfaz de INotifyDataErrorInfo permite que las clases de entidad de datos para aplicar reglas de validación personalizadas y exponer los resultados de la validación de forma asincrónica. Esta interfaz también admite objetos error personalizado, varios errores por propiedad, errores de la cruce- propiedad, y errores de entidad- nivel. Para obtener más información, vea INotifyDataErrorInfo.

Si utiliza un enlace de datos para actualizar un origen de datos, puede utilizar la propiedad de Delay para especificar una cantidad de tiempo de pasar cuando cambie la propiedad del destino antes de las actualizaciones del origen. Por ejemplo, suponga que tiene Slider que tiene el enlace de datos bidireccional de la propiedad de Value a una propiedad de un objeto de datos y la propiedad de UpdateSourceTrigger se establece en PropertyChanged. En este ejemplo, cuando el usuario mueve Slider, el origen para cada píxel que Slider mueve. El objeto de origen normalmente necesita el valor del control deslizante sólo cuando Value slider detiene el cambiar. Para impedir actualizar el origen demasiado a menudo, utilice Delay para especificar que el origen no debe actualizarse hasta que transcurra un período de tiempo después de que el control detenga el desplazamiento.

WPF admite el enlace de datos a los objetos que implementan ICustomTypeProvider, también conocidos como tipos personalizados. Puede utilizar tipos personalizados en los casos siguientes.

  1. Como PropertyPath en un enlace de datos. Por ejemplo, la propiedad de Path de Binding puede hacer referencia a una propiedad de un tipo personalizado.

  2. Como valor de la propiedad de DataType .

  3. Como tipo que determina las columnas generadas automáticamente en DataGrid.

En algunos casos, podría obtener BindingExpression de Binding y necesita información sobre los objetos de origen y de destino del enlace. Los nuevos API se han agregado para permitirle obtener el objeto de origen o de destino o la propiedad asociada. Cuando tiene BindingExpression, utilice las API siguientes para obtener información sobre el destino y el origen.

Para encontrar esta opción de enlace

Utilice esta API

El objeto de destino

BindingExpressionBase.Target

La propiedad de destino

BindingExpressionBase.TargetProperty

El objeto de origen

BindingExpression.ResolvedSource

La propiedad de origen

BindingExpression.ResolvedSourcePropertyName

Si BindingExpression pertenece a BindingGroup

BindingExpressionBase.BindingGroup

El propietario de BindingGroup

Owner

Hay casos donde DataContext de un contenedor de elementos en ItemsControl esté desconectado. Un contenedor de elemento es el elemento de la interfaz de usuario que muestra un elemento en ItemsControl. Cuando ItemsControl está enlazado a datos con una colección, un contenedor de elemento se genera para cada elemento. En algunos casos, los contenedores de elementos se quitan del árbol visual. Dos casos típicos donde se quita un contenedor de elemento son cuando un elemento se quita de la colección subyacente y cuando la virtualización está habilitada en ItemsControl. En estos casos, la propiedad de DataContext de contenedor de elemento se establecerá el objeto centinela devuelto por la propiedad estática de BindingOperations.DisconnectedSource . Debe comprobar si DataContext sea igual al objeto de DisconnectedSource antes de tener acceso DataContext de un contenedor de elementos.

Una recolección de datos puede agrupar, ordenar, filtrar o. WPF 4,5 habilita los datos que se reorganizarán cuando se modifican los datos. Por ejemplo, supongamos que una aplicación utiliza DataGrid para mostrar acciones en un mercado de acciones y las acciones se ordenan por el valor común. Si la ordenación activa está habilitada en CollectionViewde las acciones, la posición de una acción en DataGrid se mueve cuando el valor de acción se convierte en mayor o menor que el valor de otra acción. Para obtener más información, vea la interfaz ICollectionViewLiveShaping.

Implementar el modelo de evento débil resulta más fácil ahora porque los suscriptores a eventos pueden participar en él sin implementar una interfaz adicional. La clase genérica de WeakEventManager también permite suscriptores para participar en el modelo de evento débil si WeakEventManager dedicado no existe para algún evento. Para obtener más información, vea Modelos de evento débil.

La clase del distribuidor define los nuevos métodos para sincrónico y las operaciones asincrónicas. El método sincrónico de Invoke define las sobrecargas que toman un parámetro de Action o de Func<TResult> . El nuevo método asincrónico, InvokeAsync, también se Action o Func<TResult> como parámetro de devolución de llamada y devuelve DispatcherOperation o DispatcherOperation<TResult>. Las clases de DispatcherOperation y de DispatcherOperation<TResult> definen una propiedad de Task . Cuando se llama a InvokeAsync, puede utilizar la palabra clave de await con DispatcherOperation o Taskasociado. Si necesita esperar sincrónicamente Task devuelto por DispatcherOperation o DispatcherOperation<TResult>, llame al método de extensión de DispatcherOperationWait . La llamada Task.Wait dará como resultado un interbloqueo si la operación se pone en cola en un subproceso de llamada. Para obtener más información sobre cómo utilizar Task para realizar operaciones asincrónicas, vea Paralelismo de tareas (Task Parallel Library).

Extensiones de marcado de la de WPF 4,5 para los eventos. Mientras WPF no define una extensión de marcado que se utilizará para los eventos, los terceros pueden crear una extensión de marcado que se puede utilizar con eventos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft