Oefening: StackLayout gebruiken om een gebruikersinterface te bouwen
In deze oefening gebruikt u geneste StackLayout
containers om de weergaven in uw gebruikersinterface (UI) te rangschikken. In de eerste schermopname ziet u de indeling die door het startersproject is geïmplementeerd en de tweede toont de indeling voor het voltooide project. Uw taak is om containers te gebruiken StackLayout
en LayoutOptions
het startersproject om te zetten in de voltooide versie.
De startersoplossing verkennen
De startersoplossing bevat een volledig functionele tipcalculator-app. Begin met het verkennen van de gebruikersinterface om te begrijpen wat de app doet.
Open met Visual Studio de startersoplossing in de map exercise2/TipCalculator in de opslagplaats die u aan het begin van de vorige oefening hebt gekloond.
Bouw en voer de app uit op uw voorkeursbesturingssysteem.
Voer een getal in het tekstvak in en gebruik de app om te zien hoe het werkt.
Experimenteer met de knoppen voor tiphoeveelheid en de schuifregelaar.
Wanneer u klaar bent, sluit u de app.
Open MainPage.xaml. U ziet dat alle weergaven in één
VerticalStackLayout
worden geplaatst, zoals wordt weergegeven met de volgende XAML-markeringen:<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>
De gebruikersinterface herstellen
Nu u de app hebt uitgevoerd, kunt u deze er beter uitzien door containers toe te voegen HorizontalStackLayout
. Het doel is om de app te laten lijken op de schermopname aan het begin van het lab.
Open het bestand MainPage.xaml .
Opvullingseenheden en
40
afstandseenheden toevoegen10
aan hetVerticalStackLayout
volgende:<VerticalStackLayout Padding="40" Spacing="10">
Voeg een
HorizontalStackLayout
groep toe aan deLabel
tekst Bill met hetEntry
veld eronder. Stel de eigenschapSpacing
in op10
.Stel de
WidthRequest
factuurLabel
100
op en deVerticalOptions
eigenschap op .Center
Deze wijzigingen zorgen ervoor dat het label verticaal wordt uitgelijnd met hetEntry
veld.<HorizontalStackLayout Spacing="10"> <Label Text="Bill" WidthRequest="100" VerticalOptions="Center"/> <Entry ... /> </HorizontalStackLayout>
Voeg nog een
HorizontalStackLayout
toe om deLabel
tekst Tip met deLabel
benoemde tipOutput te groeperen. Stel deSpacing
eigenschap in op10
, en deMargin
eigenschap op0,20,0,0
.Stel de
WidthRequest
tipLabel
in op100
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Label Text="Tip" WidthRequest="100" /> <Label .../> </HorizontalStackLayout>
Gebruik een
HorizontalStackLayout
om de tekstLabel
Totaal te groeperen met deLabel
benoemde totalOutput. Stel de eigenschapSpacing
in op10
.Stel het
WidthRequest
totaal inLabel
op100
<HorizontalStackLayout Spacing="10"> <Label Text="Total" WidthRequest="100" /> <Label .../> </HorizontalStackLayout>
Voeg nog een
HorizontalStackLayout
toe om hetLabel
puntpercentage met deLabel
naam tipPercent te groeperen.Stel de
VerticalOptions
eigenschap van dezeHorizontalStackLayout
End
eigenschap in op en stel deSpacing
eigenschap in op10
:Stel het
WidthRequest
tippercentageLabel
in op100
<HorizontalStackLayout VerticalOptions="End" Spacing="10"> <Label Text="Tip Percentage" WidthRequest="100"/> <Label ... /> </HorizontalStackLayout>
Gebruik een
HorizontalStackLayout
groepeer hetButton
met het bijschrift 15%Button
20%.Stel de
Margin
eigenschap van ditStackLayout
in op0,20,0,0
en deSpacing
eigenschap op10
:<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Button Text="15%" ... /> <Button Text="20%" ... /> </HorizontalStackLayout>
Voeg een finale
HorizontalStackLayout
toe om hetButton
met het bijschrift Round Down en het bijschriftButton
te groeperen. Stel deMargin
eigenschap van ditStackLayout
in op0,20,0,0
en deSpacing
eigenschap op10
:<HorizontalStackLayout Margin="0,20,0,0" Spacing="10"> <Button ... Text="Round Down" /> <Button ... Text="Round Up" /> </HorizontalStackLayout>
Stel op alle vier de knopbesturingselementen de
HorizontalOptions
eigenschapCenter
in op en deWidthRequest
eigenschap op150
. Voorbeeld:<Button Text="15%" WidthRequest="150" HorizontalOptions="Center" ... />
De volledige XAML-opmaak (Extensible Application Markup Language) voor de inhoudspagina moet er als volgt uitzien:
<?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 Padding="40" Spacing="10">
<HorizontalStackLayout Spacing="10">
<Label Text="Bill" WidthRequest="100" VerticalOptions="Center" />
<Entry x:Name="billInput" Placeholder="Enter Amount" Keyboard="Numeric" />
</HorizontalStackLayout>
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Label Text="Tip" WidthRequest="100" />
<Label x:Name="tipOutput" Text="0.00" />
</HorizontalStackLayout>
<HorizontalStackLayout Spacing="10">
<Label Text="Total" WidthRequest="100"/>
<Label x:Name="totalOutput" Text="0.00" />
</HorizontalStackLayout>
<HorizontalStackLayout VerticalOptions="End" Spacing="10">
<Label Text="Tip Percentage" WidthRequest="100"/>
<Label x:Name="tipPercent" Text="15%" />
</HorizontalStackLayout>
<Slider x:Name="tipPercentSlider" Minimum="0" Maximum="100" Value="15" />
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Button Text="15%" Clicked="OnNormalTip" WidthRequest="150" HorizontalOptions="Center"/>
<Button Text="20%" Clicked="OnGenerousTip" WidthRequest="150" HorizontalOptions="Center"/>
</HorizontalStackLayout>
<HorizontalStackLayout Margin="0,20,0,0" Spacing="10">
<Button x:Name="roundDown" Text="Round Down" WidthRequest="150" HorizontalOptions="Center"/>
<Button x:Name="roundUp" Text="Round Up" WidthRequest="150" HorizontalOptions="Center"/>
</HorizontalStackLayout>
</VerticalStackLayout>
</ContentPage>
De resultaten bekijken
Voer de app opnieuw uit en bekijk de verschillen in de gebruikersinterface. Controleer of de besturingselementen correct zijn uitgelijnd en de juiste grootte en afstand hebben.
U hebt gebruikt VerticalStackLayout
en HorizontalStackLayout
containers gebruikt om de esthetische elementen van een bestaande gebruikersinterface te verbeteren. Deze indelingen zijn de eenvoudigste indelingspanelen, maar zijn krachtig genoeg om een redelijke gebruikersinterface te produceren.