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
是 List
物件的 Behavior
。 行為可讓您將可重複使用的功能加入清單,以將可重複使用的功能附加至 Behaviors
元素。 如需 類別 Behavior
的詳細資訊,請參閱 Xamarin.Forms 行為。
Bounds
屬性 Bounds
是只讀 Rectangle
物件,表示控件所佔用的空間。 屬性值 Bounds
會在版面配置周期期間指派。 Rectangle
struct
包含用來測試矩形交集和內含項目的實用屬性和方法。 如需詳細資訊,請參閱 Xamarin.Forms 矩形 API。
Clip
屬性 Clip
是 Geometry
物件,可定義項目內容的外框。 若要定義剪輯,請使用 Geometry
之類的 EllipseGeometry
物件來設定項目的 Clip
屬性。 只有幾何區域內的區域才會顯示。 如需詳細資訊,請參閱 使用 Geometry 裁剪。
Effects
屬性 Effects
是 List
Effect
物件的 ,繼承自 Element
類別。 效果允許自定義原生控件,而且通常用於小型樣式變更。 如需 類別 Effect
的詳細資訊,請參閱 Xamarin.Forms 效果。
FlowDirection
屬性 FlowDirection
是 FlowDirection
列舉值。 流程方向可以設定為 MatchParent
、 LeftToRight
或 RightToLeft
,並決定版面配置順序和方向。 屬性 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 的範圍以外的值將會被限制。 Opacity
只有當 屬性是 true
時,IsVisible
才會套用 屬性。 不透明度會反覆套用。 因此,如果父控件具有 0.5 不透明度,且其子控件具有 0.5 不透明度,則子系會以有效的 0.25 不透明度值呈現。 Opacity
將輸入控件的 屬性設定為 0 具有未定義的行為。
Parent
Parent
屬性繼承自 Element
類別。 這個屬性是 Element
控件父系的物件。 當 Parent
屬性新增為另一個專案的子系時,通常會在元素上自動設定。
Resources
屬性 Resources
是填 ResourceDictionary
入索引鍵/值組的實例,通常會在運行時間從 XAML 填入。 此字典可讓應用程式開發人員在編譯時間和運行時間重複使用 XAML 中定義的物件。 字典中的索引鍵會從 x:Key
XAML 標籤的 屬性填入。 從 XAML 建立的物件會插入指定 ResourceDictionary
索引鍵的 。 初始化之後。
如需詳細資訊,請參閱 資源字典。
Rotation
屬性 Rotation
是 double
介於零到 360 之間的值,定義以度為單位的 Z 軸旋轉。 這個屬性的預設值為 0。 旋轉會套用至 AnchorX
和 AnchorY
值。
RotationX
屬性 RotationX
是 double
介於零到 360 之間的值,定義 X 軸的旋轉度。 這個屬性的預設值為 0。 旋轉會套用至 AnchorX
和 AnchorY
值。
RotationY
屬性 RotationY
是 double
介於零到 360 之間的值,定義 Y 軸的旋轉度。 這個屬性的預設值為 0。 旋轉會套用至 AnchorX
和 AnchorY
值。
Scale
屬性 Scale
是定義 double
控件小數字數的值。 此屬性的預設值為 1.0。 相對於 和 AnchorY
值,會套用AnchorX
小數字數。
ScaleX
屬性 ScaleX
是一個 double
值,定義沿著 X 軸的控件小數字數。 此屬性的預設值為 1.0。 屬性 ScaleX
會相對於 AnchorX
值套用。
ScaleY
屬性 ScaleY
是一個 double
值,定義沿著 Y 軸的控件小數字數。 此屬性的預設值為 1.0。 屬性 ScaleY
會相對於 AnchorY
值套用。
Style
Style
屬性繼承自 NavigableElement
類別。 這個屬性是 類別的 Style
實例。 類別 Style
包含定義視覺元素外觀和行為的觸發程式、setter 和行為。 如需詳細資訊,請參閱 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
是物件的唯讀List
。TriggerBase
觸發程式可讓應用程式開發人員在 XAML 中表達動作,以變更控件的視覺外觀,以回應事件或屬性變更。 如需詳細資訊,請參閱 Xamarin.Forms 觸發程式。
Visual
屬性 Visual
是一個 IVisual
實例,可讓轉譯器建立並選擇性地套用至 VisualElement
實例。 屬性 Visual
設定為符合其父系,因此定義元件上的轉譯器也會套用至該元件的任何子系。 如果未在控件或其上階上設定任何自定義轉譯器,則會使用預設 Xamarin.Forms 轉譯器。 如需詳細資訊,請參閱 Xamarin.Forms Visual。
Width
屬性 Width
是描述控件呈現寬度的唯讀 double
值。 屬性 Width
會在版面配置週期期間計算,而且無法直接設定。 您可以使用 WidthRequest 屬性來要求控制件的寬度。
WidthRequest
屬性 WidthRequest
是 double
決定控件所需寬度的值。 控件的絕對寬度可能不符合要求的值。 如需詳細資訊,請參閱 要求屬性。
X
屬性 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
成功設定鍵盤焦點,而且false
方法呼叫不會導致焦點變更,則方法會傳回 true
。 元素必須能夠接收焦點,這個方法才能運作。 Focus
在螢幕外或未實現的專案上呼叫 方法具有未定義的行為。
Unfocus
方法 Unfocus
會嘗試移除專案上的焦點。 此方法具有下列簽章:
public void Unfocus ()
元素必須已經有焦點,這個方法才能運作。
事件
類別提供 VisualElement
下列事件。 如需完整清單,請參閱 Xamarin.Forms VisualElement事件。
Focused
Focused
每當實例收到焦點時,VisualElement
就會引發 事件。 此事件不會透過 Xamarin.Forms 堆疊反升,它會直接從原生控件接收。 這個事件是由 IsFocused
屬性 setter 所發出。
SizeChanged
SizeChanged
每當實例Height
或Width
屬性變更時,VisualElement
就會引發 事件。 如果開發人員想要直接回應大小變更,而不是響應變更後事件,則應該改為實作 OnSizeAllocated
虛擬方法。
Unfocused
Unfocused
每當實例失去焦點時,VisualElement
就會引發 事件。 此事件不會透過 Xamarin.Forms 堆疊反升,它會直接從原生控件接收。 這個事件是由 IsFocused
屬性 setter 所發出。
度量單位
Android、iOS 和 UWP 平臺都有不同測量單位,可因裝置而異。 Xamarin.Forms 會使用與平臺無關的測量單位,將裝置和平臺的單位正規化。 在 中 Xamarin.Forms,每英吋有160單位,或64單位。
要求屬性
名稱包含 「request」 的屬性會定義所需的值,這可能不符合實際的轉譯值。 例如, HeightRequest
可能會設定為 150,但如果版面配置只允許 100 個單位的空間,則轉 Height
譯的控件只會是 100。 轉譯的大小會受到可用空間和自主元件的影響。
最低要求屬性
最低要求屬性包括 MinimumHeightRequest
和 MinimumWidthRequest
,並旨在更精確地控制元素如何處理彼此相對的溢位。 不過,與這些屬性相關的版面配置行為有一些重要的考慮。
未指定的最小值
如果未設定最小值,最小值會預設為 -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
版面配置有自己的系統,可相對重設數據列和數據行的大小。 在MinimumWidthRequest
版面配置中使用 Grid
或 MinimumHeightRequest
不會有作用。 如需詳細資訊,請參閱 Xamarin.Forms 方格。