演習 - Grid を使用してユーザー インターフェイスを構築する
この演習では、Grid を使って、ユーザー インターフェイス (UI) のビューを配置します。 TipCalculator プロジェクトの別のバージョンから始めて、UI がより直感的になるように調整します。 また、ボタンをページの下部に移動します。 今回は、Grid と VerticalStackLayout を使うのではなく、HorizontalStackLayout レイアウトを使います。 次の画像は、初期の UI と、この演習の手順に従った結果の UI を示しています。
スターター ソリューションを開く
スターター ソリューションには、完全に機能するチップ計算機アプリケーションが含まれています。
Visual Studio を使って、前の演習の最初にクローンしたリポジトリの exercise3/TipCalculator フォルダー内にあるスターター ソリューションを開きます。
MainPage.xaml を開きます。 すべてのビューが 1 つの
VerticalStackLayoutパネルを使って表示されていることに注意してください。<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TipCalculator" x:Class="TipCalculator.MainPage"> <VerticalStackLayout> <Label Text="Bill" /> <Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" /> <Label Text="Tip" /> <Label x:Name="tipOutput" Text="0.00" /> <Label Text="Total" /> <Label x:Name="totalOutput" Text="0.00" /> <Label Text="Tip Percentage" /> <Label x:Name="tipPercent" Text="15%" /> <Slider x:Name="tipPercentSlider" Minimum="0" Maximum="100" Value="15" /> <Button Text="15%" Clicked="OnNormalTip" /> <Button Text="20%" Clicked="OnGenerousTip" /> <Button x:Name="roundDown" Text="Round Down" /> <Button x:Name="roundUp" Text="Round Up" /> </VerticalStackLayout> </ContentPage>
Grid レイアウトを作成する
VerticalStackLayout単位のパディングで、レイアウト パネルをGridから40に変更します。Gridに対して 7 つの行と 2 つの列を定義します。 4 番目の行を除き、すべての行がAutoサイズになるようにします。 4 行目では、グリッドに残っている使用可能なすべての領域を取得するように、Starを使う必要があります。 両方の列で、Starサイズを使用します。<Grid RowDefinitions="Auto, Auto, Auto, *, Auto, Auto, Auto" ColumnDefinitions="*, *" Padding="40"> ... </Grid>
セルにビューを配置する
Grid.RowとGrid.Columnの設定を各ビューに追加し、それらをGridの適切なセルに割り当てます。 以下のスクリーンショットを使用すれば、各ビューの配置場所を決定するのに役立ちます。
次の例では、Bill の
Labelと、billInputのEntryビューの位置を設定する方法を示します。... <Label Text="Bill" Grid.Row="0" Grid.Column="0"/> <Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" Grid.Row="0" Grid.Column="1"/> ...Label の
LabelプロパティをEntryに設定して、VerticalOptionsのCenterと を配置します。Grid.ColumnSpanの設定をSliderに追加して、2 つの列にまたがるようにします。<Slider ... Grid.ColumnSpan="2" ... />Labelというテキストの を見つけます。 これを、四角形の左下の位置を占めるように設定します。<Label Text="Tip Percentage" VerticalOptions="End" HorizontalOptions="Start" ... />Labelという名前の を見つけます。 これを、四角形の右下の位置を占めるように設定します。<Label x:Name="tipPercent" VerticalOptions="End" HorizontalOptions="End" ... />4 つのボタンすべての
Marginプロパティを5に設定します。
このページの完全な Extensible Application Markup Language (XAML) マークアップは次のようになります。
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TipCalculator"
x:Class="TipCalculator.MainPage">
<Grid RowDefinitions="Auto, Auto, Auto, *, Auto, Auto, Auto"
ColumnDefinitions="*, *"
Padding="40">
<Label Text="Bill" VerticalOptions="Center" Grid.Row="0" Grid.Column="0"/>
<Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" Grid.Row="0" Grid.Column="1"/>
<Label Text="Tip" Grid.Row="1" Grid.Column="0"/>
<Label x:Name="tipOutput" Text="0.00" Grid.Row="1" Grid.Column="1"/>
<Label Text="Total" Grid.Row="2" Grid.Column="0"/>
<Label x:Name="totalOutput" Text="0.00" Grid.Row="2" Grid.Column="1"/>
<Label Text="Tip Percentage" VerticalOptions="End" HorizontalOptions="Start" Grid.Row="3" Grid.Column="0"/>
<Label x:Name="tipPercent" Text="15%" VerticalOptions="End" HorizontalOptions="End" Grid.Row="3" Grid.Column="1"/>
<Slider x:Name="tipPercentSlider" Minimum="0" Maximum="100" Value="15" Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2"/>
<Button Text="15%" Clicked="OnNormalTip" Margin="5" Grid.Row="5" Grid.Column="0"/>
<Button Text="20%" Clicked="OnGenerousTip" Margin="5" Grid.Row="5" Grid.Column="1"/>
<Button x:Name="roundDown" Margin="5" Text="Round Down" Grid.Row="6" Grid.Column="0"/>
<Button x:Name="roundUp" Margin="5" Text="Round Up" Grid.Row="6" Grid.Column="1"/>
</Grid>
</ContentPage>
結果を確認する
アプリケーションを実行し、UI で違いを確認します。 既存の UI の外観を向上させるために、Grid を使用しました。
Grid は StackLayout よりも強力です。 つまり、Grid を使うと、行全体にビューを配置する操作がはるかに簡単になります。