Xamarin.Forms のコントロールでよく使用されるプロパティ、メソッド、イベント
Xamarin.FormsVisualElement
クラスは、Xamarin.Forms アプリケーションで使われるほとんどのコントロールの基底クラスです。 VisualElement
クラスでは、派生クラスで使われる多くのプロパティ、メソッド、イベントが定義されています。
プロパティ
VisualElement
オブジェクトでは、次のプロパティを使用できます。
AnchorX
AnchorX
プロパティは、拡大縮小や回転などの変換に対する X 軸上の中心点を定義する double
値です。 既定値は 0.5 です。
AnchorY
AnchorY
プロパティは、拡大縮小や回転などの変換に対する Y 軸上の中心点を定義する double
値です。 既定値は 0.5 です。
Background
Background
プロパティは、任意のコントロールの背景としてブラシを使用できるようにする Brush
値です。 既定値は Brush.Default
です。
BackgroundColor
BackgroundColor
プロパティは、コントロールの背景色を決定する Color
です。 設定されていない場合、背景は既定の Color
オブジェクトになり、透明としてレンダリングされます。
Behaviors
Behaviors
プロパティは、Behavior
オブジェクトの List
です。 ビヘイビアーを Behaviors
のリストに追加すると、再利用可能な機能を要素にアタッチできます。 Behavior
クラスについて詳しくは、「Xamarin.Forms のビヘイビアー」をご覧ください。
Bounds
Bounds
プロパティは、コントロールが占める領域を表す読み取り専用の Rectangle
オブジェクトです。 Bounds
プロパティの値は、レイアウト サイクルの間に割り当てられます。 Rectangle
struct
には、四角形の交差と包含をテストするための便利なプロパティとメソッドが含まれています。 詳しくは、Xamarin.Forms Rectangle API に関する記事をご覧ください。
Clip
Clip
プロパティは、要素の内容の枠線を定義する Geometry
オブジェクトです。 クリップを定義するには、EllipseGeometry
などの Geometry
オブジェクトを使って、要素の Clip
プロパティを設定します。 ジオメトリの範囲内にある領域のみが表示されます。 詳しくは、「Geometry を使用してクリップする」をご覧ください。
Effects
Effects
プロパティは、Element
クラスから継承された Effect
オブジェクトの List
です。 エフェクトを使うと、ネイティブ コントロールをカスタマイズでき、通常は小規模なスタイルの変更に使われます。 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
プロパティは、ユーザーが Tab キーを使ってコントロール間を移動するときにそのコントロールがフォーカスを受け取るかどうかを定義する bool
値です。 このプロパティが false の場合、TabIndex
プロパティは無効になります。
IsVisible
IsVisible
プロパティは、コントロールがレンダリングされるかどうかを決定する bool
値です。 IsVisible
プロパティが false に設定されているコントロールは表示されず、レイアウト サイクル中のスペース計算で考慮されず、ユーザー入力を受け入れることができません。
MinimumHeightRequest
MinimumHeightRequest
プロパティは、2 つの要素が限られたスペースを競合している場合のオーバーフローの処理方法を決定する double
値です。 MinimumHeightRequest
プロパティを設定すると、レイアウト プロセスは要求された最小寸法まで要素を縮小できます。 MinimumHeightRequest
が指定されていない場合の既定値は -1 で、レイアウト プロセスは HeightRequest
を最小値と見なします。 つまり、MinimumHeightRequest
値を持たない要素の高さは拡大縮小できません。
詳しくは、「最小要求プロパティ」をご覧ください。
MinimumWidthRequest
MinimumWidthRequest
プロパティは、2 つの要素が限られたスペースを競合している場合のオーバーフローの処理方法を決定する double
値です。 MinimumWidthRequest
プロパティを設定すると、レイアウト プロセスは要求された最小寸法まで要素を縮小できます。 MinimumWidthRequest
が指定されていない場合の既定値は -1 で、レイアウト プロセスは WidthRequest
を最小値と見なします。 つまり、MinimumWidthRequest
値を持たない要素の幅は拡大縮小できません。
詳しくは、「最小要求プロパティ」をご覧ください。
Opacity
Opacity
プロパティは、レンダリング中にコントロールの不透明度を決定する 0 から 1 の範囲の double
値です。 このプロパティの既定値は 1.0 です。 0 から 1 の範囲外の値は固定されます。 Opacity
プロパティは、IsVisible
プロパティが true
の場合にのみ適用されます。 不透明度は反復的に適用されます。 したがって、親コントロールの不透明度が 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
プロパティは、Z 軸に対する回転角度を定義する 0 から 360 の範囲の double
値です。 このプロパティの既定値は 0です。 回転は、AnchorX
と AnchorY
の値を基準にして適用されます。
RotationX
RotationX
プロパティは、X 軸に対する回転角度を定義する 0 から 360 の範囲の double
値です。 このプロパティの既定値は 0です。 回転は、AnchorX
と AnchorY
の値を基準にして適用されます。
RotationY
RotationY
プロパティは、Y 軸に対する回転角度を定義する 0 から 360 の範囲の double
値です。 このプロパティの既定値は 0です。 回転は、AnchorX
と AnchorY
の値を基準にして適用されます。
Scale
Scale
プロパティは、コントロールの拡大縮小を定義する double
値です。 このプロパティの既定値は 1.0 です。 拡大縮小は、AnchorX
と AnchorY
の値を基準にして適用されます。
ScaleX
ScaleX
プロパティは、コントロールの X 軸に沿った拡大縮小を定義する double
値です。 このプロパティの既定値は 1.0 です。 ScaleX
プロパティは、AnchorX
値を基準にして適用されます。
ScaleY
ScaleY
プロパティは、コントロールの Y 軸に沿った拡大縮小を定義する double
値です。 このプロパティの既定値は 1.0 です。 ScaleY
プロパティは、AnchorY
値を基準にして適用されます。
Style
Style
プロパティは、NavigableElement
クラスから継承されます。 このプロパティは、Style
クラスのインスタンスです。 Style
クラスには、ビジュアル要素の外観と動作を定義するトリガー、セッター、ビヘイビアーが含まれています。 詳しくは、Xamarin.Forms の XAML スタイルに関する記事をご覧ください。
StyleClass
StyleClass
プロパティは、Style
クラスの名前を表す string
オブジェクトのリストです。 このプロパティは、NavigableElement
クラスから継承されます。 StyleClass
プロパティを使うと、VisualElement
インスタンスに複数のスタイル属性を適用できます。 詳しくは、「Xamarin.Forms のスタイル クラス」をご覧ください。
TabIndex
TabIndex
プロパティは、Tab キーを使ってコントロール間を移動するときのコントロールの順序を定義する int
値です。 TabIndex
プロパティは、VisualElement
クラスが実装する ITabStopElement
インターフェイスで定義されているプロパティの実装です。
TranslationX
TranslationX
プロパティは、X 軸に適用されるデルタ平行移動を定義する double
値です。 平行移動はレイアウト後に適用され、通常はアニメーションの適用に使われます。 要素を親コンテナーの境界の外に平行移動すると、入力が機能しなくなる可能性があります。
詳しくは、「Xamarin.Forms のアニメーション」をご覧ください。
TranslationY
TranslationY
プロパティは、Y 軸に適用されるデルタ平行移動を定義する double
値です。 平行移動はレイアウト後に適用され、通常はアニメーションの適用に使われます。 要素を親コンテナーの境界の外に平行移動すると、入力が機能しなくなる可能性があります。
詳しくは、「Xamarin.Forms のアニメーション」をご覧ください。
Triggers
Triggers
プロパティは、TriggerBase
オブジェクトの読み取り専用の List
です。 トリガーを使うと、アプリケーション開発者は、イベントまたはプロパティの変化に応じてコントロールの外観を変更するアクションを XAML で表現できます。 詳しくは、「Xamarin.Forms のトリガー」をご覧ください。
Visual
Visual
プロパティは、レンダラーを作成して VisualElement
インスタンスに選択的に適用できるようにする IVisual
インスタンスです。 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
メソッドは、キーボード フォーカスが正常に設定された場合は true
を返し、メソッドの呼び出しでフォーカスが変更されなかった場合は false
を返します。 このメソッドが機能するには、要素がフォーカスを受け取ることができる必要があります。 画面外である、または実現されていない要素に対して Focus
メソッドを呼び出したときの動作は、定義されていません。
Unfocus
Unfocus
メソッドは、要素でフォーカスの削除を試みます。 このメソッドのシグネチャは次のとおりです。
public void Unfocus ()
このメソッドが機能するには、要素が既にフォーカスを持っている必要があります。
イベント
VisualElement
クラスでは、次のイベントを使用できます。 完全な一覧については、Xamarin.Forms VisualElement のイベントに関する記事をご覧ください。
Focused
Focused
イベントは、VisualElement
インスタンスがフォーカスを受け取るたびに発生します。 このイベントは、Xamarin.Forms スタックを通して上方に伝わらず、ネイティブ コントロールから直接受け取られます。 このイベントは、IsFocused
プロパティ セッターによって生成されます。
SizeChanged
SizeChanged
イベントは、VisualElement
インスタンスの Height
または Width
プロパティが変化するたびに発生します。 開発者が、変更後のイベントに応答するのではなく、サイズ変更に直接応答したい場合は、代わりに OnSizeAllocated
仮想メソッドを実装する必要があります。
Unfocused
Unfocused
イベントは、VisualElement
インスタンスがフォーカスを失うたびに発生します。 このイベントは、Xamarin.Forms スタックを通して上方に伝わらず、ネイティブ コントロールから直接受け取られます。 このイベントは、IsFocused
プロパティ セッターによって生成されます。
測定単位
Android、iOS、UWP プラットフォームはすべて、デバイスによって変わる可能性がある異なる測定単位を持っています。 Xamarin.Forms は、デバイスとプラットフォームの間で単位を正規化する、プラットフォームに依存しない測定単位を使用します。 Xamarin.Forms では、インチあたり 160 単位、またはセンチメートルあたり 64 単位になります。
要求のプロパティ
名前に "request" が含まれるプロパティでは望ましい値が定義されており、これは実際のレンダリング値と一致しない可能性があります。 たとえば、HeightRequest
が 150 に設定されていたとしても、レイアウトで 100 単位の領域しか許されない場合、コントロールのレンダリングされた Height
は 100 にしかなりません。 レンダリングされるサイズは、利用できる領域と含まれているコンポーネントの影響を受けます。
最小要求プロパティ
最小要求プロパティには、MinimumHeightRequest
と MinimumWidthRequest
が含まれ、その目的は要素が相互を基準にオーバーフローを処理する方法をより正確に制御できるようにすることです。 ただし、これらのプロパティに関連するレイアウトの動作には、考慮すべき重要なことがいくつかあります。
未指定の最小プロパティ値
最小値が設定されていない場合、最小プロパティは既定で -1 になります。 レイアウト プロセスはこの値を無視し、絶対値を最小と見なします。 この動作の実際的な結果として、最小値が指定されていない要素は縮小しません。 最小値が指定されている要素は縮小します。
次の XAML では、横方向の StackLayout
での 2 つの BoxView
要素が示されています。
<StackLayout Orientation="Horizontal">
<BoxView HeightRequest="100" BackgroundColor="Purple" WidthRequest="500"></BoxView>
<BoxView HeightRequest="100" BackgroundColor="Green" WidthRequest="500" MinimumWidthRequest="250"></BoxView>
</StackLayout>
1 つ目の BoxView
インスタンスでは、幅 500 が要求され、最小幅は指定されていません。 2 つ目の BoxView
インスタンスでは、幅 500 と最小幅 250 が要求されています。 親の StackLayout
要素に、両方のコンポーネントを要求された幅で収めるのに十分な幅がない場合、1 つ目の BoxView
インスタンスは、レイアウト プロセスによって最小幅が 500 であると見なされます。これは、他に有効な最小値が指定されていないためです。 2 つ目の BoxView
インスタンスは 250 まで縮小することが認められており、幅が 250 単位に達するまで縮小します。
1 つ目の BoxView
インスタンスの望ましい動作が、最小幅なしで縮小することであれば、MinimumWidthRequest
を 0 などの有効な値に設定する必要があります。
プロパティの最小値と絶対値
最小値が絶対値より大きい場合の動作は未定義です。 たとえば、WidthRequest
が 100 に設定されている場合、MinimumWidthRequest
プロパティは 100 を超えないようにする必要があります。 最小プロパティ値を指定する場合は、絶対値は常に最小値より大きくなるように指定する必要があります。
グリッド内の最小プロパティ
Grid
レイアウトには、行と列の相対的なサイズ設定のための独自のシステムがあります。 Grid
レイアウト内で MinimumWidthRequest
または MinimumHeightRequest
を使った場合、効果はありません。 詳しくは、「Xamarin.Forms のグリッド」をご覧ください。