Xamarin.FormsPropiedades, métodos y eventos de controles comunes

La clase Xamarin.FormsVisualElement es la clase base para la mayoría de los controles usados en una aplicación Xamarin.Forms. La clase VisualElement define muchas propiedades, métodos y eventos que se usan en la derivación de clases.

Propiedades

Las siguientes propiedades están disponibles en los objetos VisualElement.

AnchorX

La propiedad AnchorX es un valor double que define el punto central en el eje X para las transformaciones, como la escala y la rotación. El valor predeterminado es 0.5.

AnchorY

La propiedad AnchorY es un valor double que define el punto central en el eje Y para transformaciones, como escala y rotación. El valor predeterminado es 0.5.

Background

La propiedad Background es un valor Brush que permite usar pinceles como fondo en cualquier control. El valor predeterminado es Brush.Default.

BackgroundColor

La propiedad BackgroundColor es un color Color que determina el color de fondo del control. Si no se establece, el fondo será el objeto Color predeterminado, que se representa como transparente.

Behaviors

La propiedad Behaviors es de objetos ListBehavior. Los comportamientos permiten asociar la funcionalidad reutilizable a los elementos agregándolos a la lista Behaviors. Para más información sobre la clase Behavior, consulte Xamarin.Forms Comportamientos.

Bounds

La propiedad Bounds es un objeto de solo lectura Rectangle que representa el espacio ocupado por el control. El valor de la propiedad Bounds se asigna durante el ciclo de diseño. Rectanglestruct contiene propiedades y métodos útiles para probar la intersección y contención de rectángulos. Para más información, consulte Xamarin.Forms API de rectángulo.

Clip

La propiedad Clip es un objeto Geometry que define el esquema del contenido de un elemento. Para definir un clip, use un objeto Geometry como EllipseGeometry para establecer la propiedad del elemento Clip. Solo el área que se encuentra dentro de la región de la geometría será visible. Para obtener más información, vea Recorte con una geometría.

Effects

La propiedad Effects es List de objetos Effect heredados de la clase Element. Los efectos permiten personalizar los controles nativos y normalmente se usan para pequeños cambios de estilo. Para más información sobre la clase Effect, consulte Xamarin.FormsEfectos.

FlowDirection

La propiedad FlowDirection es un valor de enumeración FlowDirection. La dirección del flujo se puede establecer en MatchParent, LeftToRight o RightToLeft y determina el orden de diseño y la dirección. La propiedad FlowDirection se usa normalmente para admitir idiomas que se leen de derecha a izquierda.

Height

La propiedad Height es un valor de solo lecturadouble que describe el alto representado del control. La propiedad Height se calcula durante el ciclo de diseño y no se puede establecer directamente. El alto de un control se puede solicitar mediante la propiedad HeightRequest.

HeightRequest

La propiedad HeightRequest es un valor double que determina el alto deseado del control. Es posible que el alto absoluto del control no coincida con el valor solicitado. Para más información, consulte Propiedades necesarias.

InputTransparent

La propiedad InputTransparent es un bool que determina si el control recibe la entrada del usuario. El valor predeterminado es false, lo que garantiza que el elemento recibe la entrada. Esta propiedad transfiere a elementos secundarios cuando se establece. Establecer la propiedad InputTransparent a true en una clase de diseño dará como resultado que todos los elementos del diseño no reciban la entrada.

IsEnabled

La propiedad IsEnabled es un valor bool que determina si el control reacciona a la entrada del usuario. El valor predeterminado es true. Establecer esta propiedad en «false» impedirá que el control acepte la entrada del usuario.

IsFocused

La propiedad IsFocused es un valor bool que describe si el control es actualmente el objeto centrado. Al llamar al método Focus en el control, el valor IsFocused se establece en «true». Al llamar al método Unfocus, esta propiedad se establecerá en «false».

IsTabStop

La propiedad IsTabStop es un valor bool que define si el control recibe el foco cuando el usuario avanza a través de controles con la tecla de tabulación. Si esta propiedad es false, la propiedad TabIndex no tendrá ningún efecto.

IsVisible

La propiedad IsVisible es un valor bool que determina si se representa el control. Los controles con la propiedad IsVisible establecida en «false» no se mostrarán, no se considerarán para los cálculos de espacio durante el ciclo de diseño ni podrán aceptar la entrada del usuario.

MinimumHeightRequest

La propiedad MinimumHeightRequest es un valor double que determina cómo se controla el desbordamiento cuando dos elementos compiten por espacio limitado. Establecer la propiedad MinimumHeightRequest permite al proceso de diseño reducir verticalmente el elemento a la dimensión mínima solicitada. Si no se especifica ningún valor MinimumHeightRequest, el valor predeterminado es -1 y el proceso de diseño considerará que HeightRequest es el valor mínimo. Esto significa que los elementos sin ningún valor MinimumHeightRequest no tendrán altura escalable.

Para más información, consulte Propiedades de solicitud mínimas.

MinimumWidthRequest

La propiedad MinimumWidthRequest es un valor double que determina cómo se controla el desbordamiento cuando dos elementos compiten por espacio limitado. Establecer la propiedad MinimumWidthRequest permite al proceso de diseño reducir verticalmente el elemento a la dimensión mínima solicitada. Si no se especifica ningún valor MinimumWidthRequest, el valor predeterminado es -1 y el proceso de diseño considerará que WidthRequest es el valor mínimo. Esto significa que los elementos sin ningún valor MinimumWidthRequest no tendrán ancho escalable.

Para más información, consulte Propiedades de solicitud mínimas.

Opacity

La propiedad Opacity es un valor double de cero a uno que determina la opacidad del control durante la representación. El valor predeterminado de esta propiedad es 1.0. Se fijarán los valores fuera del intervalo comprendido entre 0 y 1. La propiedad Opacity solo se aplica si la propiedad IsVisible es true. La opacidad se aplica iterativamente. Por lo tanto, si un control primario tiene opacidad 0.5 y su elemento secundario tiene 0.5 opacidad, el elemento secundario se representará con un valor de opacidad efectivo 0.25. Establecer la propiedad Opacity de un control de entrada en 0 tiene un comportamiento indefinido.

Parent

La propiedad Parent se hereda de la clase Element. Esta propiedad es un objeto Element que es el elemento primario del control. Normalmente, la propiedad Parent se establece automáticamente en un elemento cuando se agrega como elemento secundario de otro elemento.

Resources

La Resources propiedad es una instancia ResourceDictionary que se rellena con pares clave-valor que normalmente se rellenan en tiempo de ejecución desde XAML. Este diccionario permite a los desarrolladores de aplicaciones reutilizar objetos definidos en XAML tanto en tiempo de compilación como en tiempo de ejecución. Las claves del diccionario se rellenan desde el atributo x:Key de la etiqueta XAML. El objeto creado a partir de XAML se inserta en ResourceDictionary para la clave especificada. una vez que se ha inicializado.

Para más información, consulte Diccionarios de recursos.

Rotation

La propiedad Rotation es un valor double entre cero y 360 que define el giro sobre el eje Z en grados. El valor predeterminado de esta propiedad es 0. La rotación se aplica en relación con los valores AnchorX y AnchorY.

RotationX

La propiedad RotationX es un valor double entre cero y 360 que define la rotación sobre el eje X en grados. El valor predeterminado de esta propiedad es 0. La rotación se aplica en relación con los valores AnchorX y AnchorY.

RotationY

La propiedad RotationY es un valor double entre cero y 360 que define la rotación sobre el eje Y en grados. El valor predeterminado de esta propiedad es 0. La rotación se aplica en relación con los valores AnchorX y AnchorY.

Scale

La propiedad Scale es un valor double que define la escala del control. El valor predeterminado de esta propiedad es 1.0. La escala se aplica en relación con los valoresAnchorX y AnchorY.

ScaleX

La propiedad ScaleX es un valor double que define la escala del control a lo largo del eje X. El valor predeterminado de esta propiedad es 1.0. La propiedad ScaleX se aplica en relación con el valor AnchorX.

ScaleY

La propiedad ScaleY es un valor double que define la escala del control a lo largo del eje Y. El valor predeterminado de esta propiedad es 1.0. La propiedad ScaleY se aplica en relación con el valor AnchorY.

Style

La propiedad Style se hereda de la clase NavigableElement. Esta propiedad es una instancia de la clase Style. La clase Style contiene desencadenadores, establecedores y comportamientos que definen la apariencia y el comportamiento de los elementos visuales. Para más información, consulte Xamarin.FormsEstilos XAML.

StyleClass

La propiedad StyleClass es una lista de objetos string que representan los nombres de las clases Style. Esta propiedad se hereda de la clase NavigableElement. La propiedad StyleClass permite aplicar varios atributos de estilo a una instancia VisualElement. Para más información, consulte Xamarin.FormsClases de estilo.

TabIndex

La propiedad TabIndex es un valor int que define el orden de control al avanzar a través de controles con la tecla de tabulación. La propiedad TabIndex es la implementación de la propiedad definida en la interfaz ITabStopElement, que implementa la clase VisualElement.

TranslationX

La propiedad TranslationX es un valor double que define la traducción diferencial que se aplicará en el eje X. La traducción se aplica a partir del diseño y se usa normalmente para aplicar animaciones. La traducción de un elemento fuera de los límites de su contenedor primario puede impedir que las entradas funcionen.

Para más información, consulte Animaciones en Xamarin.Forms.

TranslationY

La propiedad TranslationY es un valor double que define la traducción diferencial que se aplicará en el eje Y. La traducción se aplica a partir del diseño y se usa normalmente para aplicar animaciones. La traducción de un elemento fuera de los límites de su contenedor primario puede impedir que las entradas funcionen.

Para más información, consulte Animaciones en Xamarin.Forms.

Triggers

La propiedad Triggers es de solo lectura List de objetos TriggerBase. Los desencadenadores permiten a los desarrolladores de aplicaciones expresar acciones en XAML que cambian la apariencia visual de los controles en respuesta a los cambios de eventos o propiedades. Para más información, consulte Xamarin.FormsDesencadenadores.

Visual

La propiedad Visual es una instancia IVisual que permite que los representadores se creen y se apliquen selectivamente a instancias VisualElement. La propiedad Visual se establece para que coincida con su elemento primario, por lo que definir un representador en un componente también se aplicará a los elementos secundarios de ese componente. Si no se establece ningún representador personalizado en un control o en sus antecesores, se usará el representador predeterminado Xamarin.Forms. Para más información, vea Xamarin.Forms Visual.

Width

La propiedad Width es un valor de solo lectura double que describe el ancho representado del control. La propiedad Width se calcula durante el ciclo de diseño y no se puede establecer directamente. El ancho de un control se puede solicitar mediante la propiedad WidthRequest.

WidthRequest

La propiedad WidthRequest es un valor double que determina el ancho deseado del control. Es posible que el ancho absoluto del control no coincida con el valor solicitado. Para más información, consulte Propiedades necesarias.

X

La propiedad X es un valor de solo lectura double que describe la posición X actual del control.

Y

La propiedad Y es un valor de solo lectura double que describe la posición Y actual del control.

Métodos

Los métodos siguientes están disponibles en la clase VisualElement. Para obtener una lista completa, consulte Métodos de la API de VisualElement.

FindByName

El método FindByName se hereda de la clase Element y tiene la siguiente firma:

public object FindByName (string name)

Este método busca en todos los elementos secundarios el argumento name proporcionado y devuelve el elemento que tiene el nombre especificado. Si no se encuentra ninguna coincidencia, se devuelve null.

Focus

El método Focus intenta establecer el foco en el elemento. Este método tiene la siguiente firma:

public bool Focus ()

El método Focus devuelve true si el foco del teclado se estableció correctamente, y false si la llamada al método no dio lugar a un cambio de foco. El elemento debe poder recibir el foco para que este método funcione. Llamar al método Focus en elementos que están fuera de pantalla o no realizados tiene un comportamiento indefinido.

Unfocus

El método Unfocus intenta quitar el foco en el elemento. Este método tiene la siguiente firma:

public void Unfocus ()

El elemento debe tener ya el foco para que este método funcione.

Eventos

Los siguientes eventos están disponibles en la clase VisualElement. Para obtener una lista completa, consulte Xamarin.Forms Eventos de VisualElement.

Focused

El evento Focused se genera cada vez que la instancia VisualElement recibe el foco. Este evento no se propaga a través de la pila Xamarin.Forms, se recibe directamente desde el control nativo. El establecedor de propiedades IsFocused emite este evento.

SizeChanged

El evento SizeChanged se genera cada vez que la VisualElement instanciaHeight o las propiedades Width cambian. Si los desarrolladores desean responder directamente al cambio de tamaño, en lugar de responder al evento posterior al cambio, deben implementar el método virtual OnSizeAllocateden su lugar.

Unfocused

El evento Unfocused se genera cada vez que la instancia VisualElement pierde foco. Este evento no se propaga a través de la pila Xamarin.Forms, se recibe directamente desde el control nativo. El establecedor de propiedades IsFocused emite este evento.

Unidades de medida

Las plataformas Android, iOS y UWP tienen unidades de medida diferentes que pueden variar en cada dispositivo. Xamarin.Forms usa una unidad de medida independiente de la plataforma que normaliza las unidades entre dispositivos y plataformas. En Xamarin.Forms hay 160 unidades por pulgada, o 64 unidades por centímetro.

Propiedades de solicitud

Las propiedades cuyos nombres contienen «request» definen un valor deseado, que puede no coincidir con el valor representado real. Por ejemplo, HeightRequest puede establecerse en 150, pero si el diseño solo permite espacio para 100 unidades, el Height representado del control solo será 100. El tamaño representado se ve afectado por el espacio disponible y los componentes contenidos.

Propiedades mínimas de solicitud

Las propiedades de solicitud mínimas incluyen MinimumHeightRequest y MinimumWidthRequest, y están diseñadas para permitir un control más preciso sobre cómo los elementos controlan el desbordamiento entre sí. Sin embargo, el comportamiento de diseño relacionado con estas propiedades tiene algunas consideraciones importantes.

Valores mínimos de propiedad no especificados

Si no se establece un valor mínimo, la propiedad mínima tiene como valor predeterminado -1. El proceso de diseño omite este valor y considera que el valor absoluto es el mínimo. La consecuencia práctica de este comportamiento es que un elemento sin ningún valor mínimo especificado no se reducirá. Se reducirá un elemento con un valor mínimo especificado.

En el código XAML siguiente se muestran dos elementos BoxView en una StackLayout horizontal:

<StackLayout Orientation="Horizontal">
    <BoxView HeightRequest="100" BackgroundColor="Purple" WidthRequest="500"></BoxView>
    <BoxView HeightRequest="100" BackgroundColor="Green" WidthRequest="500" MinimumWidthRequest="250"></BoxView>
</StackLayout>

La primera instancia BoxView solicita un ancho de 500 y no especifica un ancho mínimo. La segunda instancia BoxView solicita un ancho de 500 y un ancho mínimo de 250. Si el elemento primario StackLayout no es lo suficientemente ancho como para contener ambos componentes en su ancho solicitado, el proceso de diseño considerará que la primera instanciaBoxView tendrá un ancho mínimo de 500 porque no se especifica ningún otro mínimo válido. La segunda instancia BoxView puede reducir verticalmente a 250 y se reducirá hasta que su ancho alcance 250 unidades.

Si el comportamiento deseado es para que la primera instancia BoxView se escale verticalmente sin ancho mínimo, MinimumWidthRequest debe establecerse en un valor válido, como 0.

Valores mínimos y absolutos de propiedad

El comportamiento no está definido cuando el valor mínimo es mayor que el valor absoluto. Por ejemplo, si WidthRequest se establece en 100, la propiedad MinimumWidthRequestnunca debe superar los 100. Al especificar un valor de propiedad mínimo, siempre debe especificar un valor absoluto para asegurarse de que el valor absoluto es mayor que el valor mínimo.

Propiedades mínimas dentro de una Cuadrícula

Los diseños Grid tienen su propio sistema para el ajuste de tamaño relativo de filas y columnas. El uso de MinimumWidthRequest o MinimumHeightRequest dentro de un diseño Grid no tendrá ningún efecto. Para más información, consulte Xamarin.FormsCuadrícula.