Compartir a través de


MarkupExtension.ProvideValue(IServiceProvider) Método

Definición

Cuando se implementa en una clase derivada, devuelve un objeto que se proporciona como el valor de la propiedad de destino para esta extensión de marcado.

public:
 abstract System::Object ^ ProvideValue(IServiceProvider ^ serviceProvider);
public abstract object ProvideValue (IServiceProvider serviceProvider);
abstract member ProvideValue : IServiceProvider -> obj
Public MustOverride Function ProvideValue (serviceProvider As IServiceProvider) As Object

Parámetros

serviceProvider
IServiceProvider

Un asistente del proveedor de servicios que puede prestar servicios para la extensión de marcado.

Devoluciones

Valor de objeto que se va a establecer en la propiedad a la que se aplica la extensión.

Comentarios

Cuando un procesador XAML procesa un nodo de tipo y un valor de miembro que es una extensión de marcado, invoca el ProvideValue método de esa extensión de marcado y escribe el resultado en el gráfico de objetos o el flujo de serialización. El escritor de objetos XAML pasa el contexto del servicio a cada una de estas implementaciones a través del serviceProvider parámetro .

Consulte la sección "Notas a los implementadores" para obtener más información sobre cómo implementar ProvideValue en una extensión de marcado personalizada.

Notas de uso de WPF

Importante

Las clases de WPF que tienen interacciones específicas con las operaciones del conjunto de marcado no deben depender IReceiveMarkupExtension de una implementación de .NET Framework 4. Use XamlSetMarkupExtensionAttributedevoluciones de llamada con atributos en su lugar.

Notas a los implementadores

Los servicios comunes devueltos por el proveedor de servicios predeterminado que normalmente está disponible para una implementación personalizada o existente MarkupExtension incluyen los siguientes servicios principales.

Potencialmente, las implementaciones de ProvideValue(IServiceProvider) pueden omitir el serviceProvider parámetro . Esto es viable para algunos escenarios básicos, donde no se requiere ningún contexto para devolver un valor.

En el uso típico, los servicios XAML de .NET Framework y los escritores de objetos XAML implementados proporcionarán un proveedor de servicios a todos los métodos de convertidor de valores que se invocan durante el procesamiento XAML. Sin embargo, para mejorar la solidez, debe proporcionar rutas de acceso de código para valores NULL tanto para el propio proveedor de servicios como para cualquier servicio solicitado. Es posible que se produzcan valores NULL si la extensión de marcado se aplica en una circunstancia en la que la compatibilidad de servicio típica proporcionada por una infraestructura de procesador XAML no está disponible.

Para obtener más información sobre los servicios disponibles desde el contexto del proveedor de servicios XAML y cómo usarlos, consulta Convertidores de tipos y extensiones de marcado para XAML.

Se espera que las implementaciones que requieren que un determinado servicio esté disponible para generar un resultado útil ProvideValue(IServiceProvider) produzcan excepciones si ese servicio no está disponible. La excepción recomendada para iniciar es InvalidOperationException.

La implementación también puede producir excepciones si uno de los argumentos que necesita la extensión de marcado personalizado para proporcionar un valor es NULL, no es válido para su tipo de datos o no contiene un valor que la extensión de marcado sea capaz de procesar. La excepción recomendada para iniciar es InvalidOperationException.

Se aplica a

Consulte también