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 List
Behavior
. 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. Rectangle
struct
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 OnSizeAllocated
en 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 MinimumWidthRequest
nunca 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.