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 プロパティの値は、レイアウト サイクルの間に割り当てられます。 Rectanglestruct には、四角形の交差と包含をテストするための便利なプロパティとメソッドが含まれます。 詳しくは、Xamarin.Forms Rectangle API に関する記事をご覧ください。

Clip

Clip プロパティは、要素の内容の枠線を定義する Geometry オブジェクトです。 クリップを定義するには、EllipseGeometry などの Geometry オブジェクトを使って、要素の Clip プロパティを設定します。 ジオメトリの範囲内にある領域のみが表示されます。 詳しくは、「Geometry を使用してクリップする」をご覧ください。

Effects

Effects プロパティは、Element クラスから継承された Effect オブジェクトの List です。 エフェクトを使うと、ネイティブ コントロールをカスタマイズでき、通常は小規模なスタイルの変更に使われます。 Effect クラスについて詳しくは、「Xamarin.Forms のエフェクト」をご覧ください。

FlowDirection

FlowDirection プロパティは、FlowDirection 列挙型の値です。 フローの方向は MatchParentLeftToRight、または 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です。 回転は、AnchorXAnchorY の値を基準にして適用されます。

RotationX

RotationX プロパティは、X 軸に対する回転角度を定義する 0 から 360 の範囲の double 値です。 このプロパティの既定値は 0です。 回転は、AnchorXAnchorY の値を基準にして適用されます。

RotationY

RotationY プロパティは、Y 軸に対する回転角度を定義する 0 から 360 の範囲の double 値です。 このプロパティの既定値は 0です。 回転は、AnchorXAnchorY の値を基準にして適用されます。

Scale

Scale プロパティは、コントロールの拡大縮小を定義する double 値です。 このプロパティの既定値は 1.0 です。 拡大縮小は、AnchorXAnchorY の値を基準にして適用されます。

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 にしかなりません。 レンダリングされるサイズは、利用できる領域と含まれているコンポーネントの影響を受けます。

最小要求プロパティ

最小要求プロパティには、MinimumHeightRequestMinimumWidthRequestが含まれ、その目的は要素が相互を基準にオーバーフローを処理する方法をより正確に制御できるようにすることです。 ただし、これらのプロパティに関連するレイアウトの動作には、考慮すべき重要なことがいくつかあります。

未指定の最小プロパティ値

最小値が設定されていない場合、最小プロパティは既定で -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 のグリッド」をご覧ください。