DockLayout

DockLayout は、レイアウト コンテナーの側面にビューをドッキングできるレイアウトです。

次の図は、 DockLayout がどのように概念的に構造化されているかを示しています。 子ビューは、 または右 の 4 つのドッキング位置のいずれかにドッキングされます ( DockPosition.TopDockPosition.BottomDockPosition.LeftDockPosition.Rightと同じです)。 明示的にドッキングされていないビュー (または DockPosition.None) は、中央 (または Top / BottomLeft / Right 位置の間) に表示されます。

DockLayout の概念

DockLayout の構築

次のセクションでは、C# と XAML の両方で DockLayout を使用する方法について説明します。

XAML

XAML 名前空間を含める

XAML でこのツールキットを使用するには、次の xmlns をページまたはビューに追加する必要があります。

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

したがって、以下の通りです

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

次のように、xmlns を含むように変更されます。

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

DockLayout の使用

次に示すように、XAML で基本的な DockLayout を作成できます。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="MyProject.MyContentPage">

    <toolkit:DockLayout>
        <Button toolkit:DockLayout.DockPosition="Top" Text="Top" HeightRequest="50" />
        <Button toolkit:DockLayout.DockPosition="Bottom" Text="Bottom" HeightRequest="70" />
        <Button toolkit:DockLayout.DockPosition="Left" Text="Left" WidthRequest="80" />
        <Button toolkit:DockLayout.DockPosition="Right" Text="Right" WidthRequest="90" />
        <Button Text="Center" />
    </toolkit:DockLayout>
    
</ContentPage>

Left / Right ドッキングの場合は、WidthRequestを指定する必要があります。 Top / Bottom ドッキングの場合、HeightRequestはドッキング方向に沿って子ビューのサイズを定義します。 直交方向は常に、 DockLayout マネージャーによって暗黙的に計算されます。

C#

DockLayoutは、次に示すように C# で簡単に構築できます。

using CommunityToolkit.Maui.Layouts;

var page = new ContentPage
{
    Content = new DockLayout
    {
        { new Button { Text = "Top", HeightRequest = 50 }, DockPosition.Top },
        { new Button { Text = "Bottom", HeightRequest = 70 }, DockPosition.Bottom },
        { new Button { Text = "Left", WidthRequest = 80 }, DockPosition.Left },
        { new Button { Text = "Right", WidthRequest = 90 }, DockPosition.Right },
        { new Button { Text = "Center" } },
    }
};

注: DockPosition.None は既定値であり、省略できます。

ドッキング位置の設定

C# からドッキング位置を設定するには、 DockLayout.SetDockPosition(IView, DockPosition) を使用して添付 DockPosition プロパティを適用します。

var button = new Button { Text = "Top", HeightRequest = 50 };
DockLayout.SetDockPosition(button, DockPosition.Top);

DockLayout のカスタマイズ

DockLayout コンテナーは、任意のPaddingと、カスタマイズのためのいくつかのDockLayout固有のプロパティをサポートします。 使用可能なすべてのオプションを含む XAML の例を次に示します。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="MyProject.MyContentPage">

    <toolkit:DockLayout HeightRequest="400"
                    WidthRequest="600"
                    Padding="10,20,30,40"
                    VerticalSpacing="10"
                    HorizontalSpacing="15"
                    ShouldExpandLastChild="False">
        ...
    </toolkit:DockLayout>
    
</ContentPage>

プロパティ

財産 タイプ Description
Padding Thickness レイアウト コンテナーの周囲のパディング ( Layoutから継承) を取得または設定します。
HorizontalSpacing double ドッキングされたビュー間の 水平方向 の間隔を取得または設定します。
VerticalSpacing double ドッキングされたビュー間の 垂直方向 の間隔を取得または設定します。
HorizontalSpacing および VerticalSpacing は、 DockLayout内の隣接するビュー間で適用されます。 たとえば、 HorizontalSpacingLeft ビュー、 None ビュー、 Right ビューの間に追加されますが、同じ DockPosition 内の隣接するビュー間にも追加されます (複数のビューが にドッキングされている場合など)。 VerticalSpacingNoneBottom の位置では、 は縦に積み重ねられたビューの間にレンダリングされます。
ShouldExpandLastChild bool true の場合、最後の子要素が拡張されて、残りの領域を埋めるようになります(既定値: true)。

追加メモ

DockLayoutが空間的に制約された場所 (特に、HeightRequestまたはコンテナーのWidthRequestで指定されたサイズ) で使用される場合、子ビューがDockLayout コンテナーに追加される順序によって優先順位が与えられます。 したがって、すべての子ビューをレンダリングするための十分な領域がない場合は常に、レンダリング時に最も優先度の低い子 (最後に追加された子) が削除されます。 そのため、コンテナーのサイズが少なくともすべての子ビューの最小サイズをカバーしていることを常に確認する必要があります。

例示

DockLayout 機能の例は、.NET MAUI Community Toolkit サンプル アプリケーションで確認できます。

API

DockLayoutのソース コードは、.NET MAUI Community Toolkit GitHub リポジトリDockLayout および DockLayoutManager にあります。