Xamarin.Forms 常见的控件属性、方法和事件

Xamarin.FormsVisualElement 类是 Xamarin.Forms 应用程序中使用的大部分控件的基类。 VisualElement 类定义许多 属性方法,以及派生类中使用的 事件。

属性

VisualElement 对象上提供了以下属性。

AnchorX

AnchorX 属性是一个 double 值,用于定义 X 轴上的中心点进行缩放和旋转等转换。 默认值为 0.5。

AnchorY

AnchorY 属性是一个 double 值,用于定义 Y 轴上的中心点,用于缩放和旋转等转换。 默认值为 0.5。

Background

Background 属性是一个 Brush 值,使画笔可用作任何控件中的背景。 默认值为 Brush.Default

BackgroundColor

BackgroundColor 属性是确定控件背景色的 Color。 如果未设置,背景将是默认 Color 对象,该对象呈现为透明。

Behaviors

Behaviors 属性是 Behavior 对象的 List。 行为使你可以通过将可重用功能添加到 Behaviors 列表来将可重用功能附加到元素。 有关 Behavior 类的详细信息,请参阅Xamarin.Forms 行为

Bounds

Bounds 属性是一个只读 Rectangle 对象,表示控件占用的空间。 Bounds 属性值是在布局周期内分配的。 包含Rectanglestruct用于测试矩形交集和包含的有用属性和方法。 有关详细信息,请参阅Xamarin.Forms 矩形 API

Clip

Clip 属性是一个定义元素内容的大纲的 Geometry 对象。 若要定义剪辑,请使用 Geometry 对象(如 EllipseGeometry)设置元素的 Clip 属性。 只有几何图形区域内的区域才会可见。 有关详细信息,请参阅使用几何图形进行剪切

Effects

Effects 属性是继承自 Element 类的 Effect 对象的 List。 效果允许自定义本机控件,通常用于小幅样式更改。 有关 Effect 类的详细信息,请参阅Xamarin.Forms 效果

FlowDirection

FlowDirection 属性是一个 FlowDirection 枚举值。 流方向可以设置为 MatchParentLeftToRightRightToLeft 并确定布局顺序和方向。 FlowDirection 属性通常用于支持从右到左读取的语言。

Height

Height 属性是描述控件呈现高度的只读 double 值。 Height 属性是在布局周期内计算的,不能直接设置。 可以使用 HeightRequest 属性请求控件的高度。

HeightRequest

HeightRequest 属性是一个确定控件所需高度的 double 值。 控件的绝对高度可能与请求的值不匹配。 有关详细信息,请参阅请求属性

InputTransparent

InputTransparent 属性是一个 bool,用于确定控件是否接收用户输入。 默认值为 false,确保元素接收输入。 此属性在设置时传输到子元素。 将 InputTransparent 属性设置为 true 布局类将导致布局中的所有元素不接收输入。

IsEnabled

IsEnabled 属性是一个 bool 值,用于确定控件是否对用户输入做出反应。 默认值为 true。 将此属性设置为 false 将阻止控件接受用户输入。

IsFocused

IsFocused 属性是一个 bool 值,该值描述控件当前是否为焦点对象。 对控件调用 Focus 方法将导致将 IsFocused 值设置为 true。 调用 Unfocus 方法会将此属性设置为 false。

IsTabStop

IsTabStop 属性是一个 bool 值,用于定义当用户使用 Tab 键通过控件时是否接收焦点。 如果此属性为 false,则 TabIndex 属性将不起作用。

IsVisible

IsVisible 属性是一个 bool 值,用于确定是否呈现控件。 不会显示 IsVisible 属性设置为 false 的控件,也不会在布局周期内考虑空间计算,也不能接受用户输入。

MinimumHeightRequest

MinimumHeightRequest 属性是一个 double 值,用于确定当两个元素争用有限的空间时如何处理溢出。 设置 MinimumHeightRequest 属性允许布局过程将元素缩减到请求的最小维度。 如果未指定 MinimumHeightRequest,则默认值为 -1,布局过程会将 HeightRequest 视为最小值。 这意味着没有 MinimumHeightRequest 值的元素将不具有可缩放的高度。

有关详细信息,请参阅最小请求属性

MinimumWidthRequest

MinimumWidthRequest 属性是一个 double 值,用于确定当两个元素争用有限的空间时如何处理溢出。 设置 MinimumWidthRequest 属性允许布局过程将元素缩减到请求的最小维度。 如果未指定 MinimumWidthRequest,则默认值为 -1,布局过程会将 WidthRequest 视为最小值。 这意味着没有 MinimumWidthRequest 值的元素将没有可缩放的宽度。

有关详细信息,请参阅最小请求属性

Opacity

Opacity 属性是一个从零到零的 double 值,用于确定呈现过程中控件的不透明度。 此属性的默认值为 1.0。 从 0 到 1 的范围之外的值将被固定。 仅当 IsVisible 属性 true 时,才会应用 Opacity属性。 不透明度以迭代方式应用。 因此,如果父控件具有 0.5 不透明度,并且其子控件具有 0.5 不透明度,则子控件将以有效的 0.25 不透明度值呈现。 将输入控件的 Opacity 属性设置为 0 具有未定义的行为。

Parent

Parent 属性继承自 Element 类。 此属性是作为控件父级的 Element 对象。 当 Parent 属性添加为另一个元素的子元素时,通常会自动设置该属性。

Resources

Resources 属性是一个 ResourceDictionary 实例,该实例使用通常在运行时从 XAML 填充的键/值对填充。 此字典允许应用程序开发人员在编译时和运行时重复使用 XAML 中定义的对象。 字典中的键是从 XAML 标记的 x:Key 属性填充的。 从 XAML 创建的对象将插入到指定键的 ResourceDictionary 中。 初始化后。

有关详细信息,请参阅资源字典

Rotation

Rotation 属性是一个介于零到 360 之间的 double 值,用于定义以度为单位的 Z 轴的旋转。 此属性的默认值为 0。 相对于 AnchorXAnchorY 值应用旋转。

RotationX

RotationX 属性是一个介于零到 360 之间的 double 值,用于定义 X 轴的旋转(以度为单位)。 此属性的默认值为 0。 相对于 AnchorXAnchorY 值应用旋转。

RotationY

RotationY 属性是一个介于零和 360 之间的 double 值,用于定义以度为单位的 Y 轴的旋转。 此属性的默认值为 0。 相对于 AnchorXAnchorY 值应用旋转。

Scale

Scale 属性是一个定义控件刻度 double 值。 此属性的默认值为 1.0。 缩放相对于 AnchorXAnchorY 值应用。

ScaleX

ScaleX 属性是一个 double 值,用于定义沿 X 轴的控件刻度。 此属性的默认值为 1.0。 ScaleX 属性相对于 AnchorX 值应用。

ScaleY

ScaleY 属性是一个 double 值,用于定义沿 Y 轴的控件刻度。 此属性的默认值为 1.0。 ScaleY 属性相对于 AnchorY 值应用。

Style

Style 属性继承自 NavigableElement 类。 此属性是 Style 类的实例。 Style 类包含定义视觉元素外观和行为的触发器、资源库和行为。 有关详细信息,请参阅 Xamarin.Forms XAML 样式

StyleClass

StyleClass 属性是表示 Style 类名称的 string 对象列表。 此属性继承自 NavigableElement 类。 StyleClass 属性允许将多个样式属性应用于 VisualElement 实例。 有关详细信息,请参阅Xamarin.Forms 样式类

TabIndex

TabIndex 属性是一个 int 值,该值使用 Tab 键在通过控件前进时定义控件顺序。 TabIndex 属性是在 ITabStopElement 接口上定义的属性的实现,VisualElement 类实现该属性。

TranslationX

TranslationX 属性是一个 double 值,用于定义要在 X 轴上应用的增量转换。 转换在布局后应用,通常用于应用动画。 转换其父容器边界外的元素可能会阻止输入正常工作。

有关详细信息,请参阅 Xamarin.Forms 中的动画

TranslationY

TranslationY 属性是一个 double 值,用于定义要在 Y 轴上应用的增量转换。 转换在布局后应用,通常用于应用动画。 转换其父容器边界外的元素可能会阻止输入正常工作。

有关详细信息,请参阅 Xamarin.Forms 中的动画

Triggers

Triggers 属性是 TriggerBase 对象的只读 List。 触发器允许应用程序开发人员在 XAML 中表达操作,以更改控件的视觉外观以响应事件或属性更改。 有关详细信息,请参阅 Xamarin.Forms 触发器

Visual

Visual 属性是一个 IVisual 实例,使呈现器能够创建和选择性地应用于 VisualElement 实例。 Visual 属性设置为与其父级匹配,因此在组件上定义呈现器也适用于该组件的任何子级。 如果未对控件或其上级设置自定义呈现器,将使用默认 Xamarin.Forms 呈现器。 有关详细信息,请参阅 Xamarin.Forms Visual

Width

Width 属性是描述控件呈现宽度的只读 double 值。 Width 属性是在布局周期内计算的,不能直接设置。 可以使用 WidthRequest 属性请求控件的宽度。

WidthRequest

WidthRequest 属性是确定控件所需宽度的 double 值。 控件的绝对宽度可能与请求的值不匹配。 有关详细信息,请参阅请求属性

X

X 属性是描述控件当前位置的只读 double 值。

Y

Y 属性是描述控件当前 Y 位置的只读 double 值。

方法

VisualElement 类上提供了以下方法。 有关完整列表,请参阅 VisualElement API 方法

FindByName

FindByName 方法继承自 Element 类,具有以下签名:

public object FindByName (string name)

此方法搜索提供 name 参数的所有子元素,并返回具有指定名称的元素。 如果未找到匹配项,则返回 null

Focus

Focus 方法尝试设置对元素的焦点。 此方法具有以下签名:

public bool Focus ()

如果成功设置键盘焦点,Focus 方法返回 true;如果方法调用未导致焦点更改,则返回 false。 该元素必须能够接收焦点才能使此方法正常工作。 对屏幕外或未实现的元素调用 Focus 方法具有未定义的行为。

Unfocus

Unfocus 方法尝试删除对元素的焦点。 此方法具有以下签名:

public void Unfocus ()

该元素必须已具有使此方法正常工作的焦点。

事件

VisualElement 类上提供了以下事件。 有关完整列表,请参阅 Xamarin.Forms VisualElement 事件

Focused

每当 VisualElement 实例收到焦点时,将引发 Focused 事件。 此事件不会通过 Xamarin.Forms 堆栈气泡,它直接从本机控件接收。 此事件由 IsFocused 属性资源库发出。

SizeChanged

每当 VisualElement 实例 HeightWidth 属性发生更改时,将引发 SizeChanged 事件。 如果开发人员希望直接响应大小更改,而不是响应更改后事件,则应改为实现 OnSizeAllocated 虚拟方法。

Unfocused

每当 VisualElement 实例失去焦点时,就会引发 Unfocused 事件。 此事件不会通过 Xamarin.Forms 堆栈气泡,它直接从本机控件接收。 此事件由 IsFocused 属性资源库发出。

度量单位

Android、iOS 和 UWP 平台都具有不同的度量单位,这些度量单位可能因设备而异。 Xamarin.Forms 使用独立于平台的度量单位,以规范化设备和平台中的单位。 在 Xamarin.Forms 中,每英寸有 160 个单位,即每厘米有 64 个单位。

请求属性

名称包含“request”的属性定义所需的值,该值可能与实际呈现的值不匹配。 例如,HeightRequest 可能设置为 150,但如果布局仅允许 100 个单位的空间,则呈现的控件 Height 将仅为 100。 呈现的大小受可用空间和包含组件的影响。

最小请求属性

最小请求属性包括 MinimumHeightRequestMinimumWidthRequest,旨在更准确地控制元素如何处理彼此的溢出。 但是,与这些属性相关的布局行为有一些重要的注意事项。

未指定的最小属性值

如果未设置最小值,则最小值默认为 -1。 布局过程忽略此值,并将绝对值视为最小值。 此行为的实际后果是,没有指定最小值 的元素不会收缩。 指定了最小值的元素收缩。

以下 XAML 显示了水平 StackLayout 中的两个 BoxView 元素:

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

第一个 BoxView 实例请求宽度为 500 且未指定最小宽度。 第二个 BoxView 实例请求宽度为 500,最小宽度为 250。 如果父 StackLayout 元素不够宽,无法以请求的宽度包含这两个组件,则布局进程会将第一个 BoxView 实例视为最小宽度为 500,因为未指定其他有效最小值。 允许第二个 BoxView 实例纵向缩减到 250 个实例,它将缩小以适应大小,直到其宽度达到 250 个单位。

如果所需的行为是让第一个 BoxView 实例缩减且没有最小宽度,则必须将 MinimumWidthRequest 设置为有效值,例如 0。

最小值和绝对属性值

当最小值大于绝对值时,该行为是未定义的。 例如,如果 WidthRequest 设置为 100,则 MinimumWidthRequest 属性不应超过 100。 指定最小值时,应始终指定绝对值以确保绝对值大于最小值。

网格中的最小属性

Grid 布局有自己的系统,用于相对调整行和列的大小。 在 Grid 布局中使用 MinimumWidthRequestMinimumHeightRequest 将不起作用。 有关详细信息,请参阅Xamarin.Forms 网格