Temat:
Stwórz aplikację mobilną w .NET MAUI, która umożliwia wpisanie danych użytkownika w formularzu, wczytanie zdjęcia z pliku oraz wyświetlenie podsumowania w drugim oknie.
Etapy rozwiązania
1. Utwórz projekt
- Otwórz Visual Studio 2022.
- Wybierz: Nowy projekt → .NET MAUI App → Aplikacja MAUI (.NET MAUI App).
- Nazwij projekt np. FormularzOsobaApp.
2. Dodaj model danych (klasa na dane osoby)
- W Solution Explorer kliknij prawym na projekt.
- Wybierz Dodaj → Nowy folder i nazwij go Modele.
- Kliknij prawym na folder Modele → Dodaj → Klasa.
- Nazwij klasę DaneOsoby.cs i wklej kod:
namespace FormularzOsobaApp.Modele;
public class DaneOsoby
{
public string Imie { get; set; } = "";
public string Nazwisko { get; set; } = "";
public DateTime DataUrodzenia { get; set; } = DateTime.Today;
public string Miejscowosc { get; set; } = "";
public string? SciezkaObrazu { get; set; }
}
Po co to?
Dzięki temu wszystkie dane osoby przechowamy w jednym obiekcie, który łatwo przekażemy do drugiej strony.
3. Stwórz pierwsze okno (formularz)
Krok: Dodaj nową stronę.
- Kliknij prawym na projekt → Dodaj → Nowy element.
- Wybierz .NET MAUI ContentPage (XAML).
- Nazwij stronę: FormularzOsobaPage.xaml.
<?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"
x:Class="FormularzOsobaApp.FormularzOsobaPage"
Title="Formularz osoby">
<ScrollView>
<VerticalStackLayout Padding="16" Spacing="12">
<Label Text="Imię"/>
<Entry x:Name="PoleImie"/>
<Label Text="Nazwisko"/>
<Entry x:Name="PoleNazwisko"/>
<Label Text="Data urodzenia"/>
<DatePicker x:Name="PoleData"/>
<Label Text="Miejscowość"/>
<Entry x:Name="PoleMiejscowosc"/>
<Label Text="Zdjęcie"/>
<Image x:Name="PodgladObraz" HeightRequest="200" Aspect="AspectFit"/>
<Button Text="Wybierz zdjęcie" Clicked="WybierzZdjecie_Click"/>
<Button Text="Dalej →" Clicked="Dalej_Click"/>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
C#
using FormularzOsobaApp.Modele;
using Microsoft.Maui.Storage;
namespace FormularzOsobaApp;
public partial class FormularzOsobaPage : ContentPage
{
private string? _sciezkaObrazu; // ścieżka do zdjęcia
public FormularzOsobaPage()
{
InitializeComponent();
}
private async void WybierzZdjecie_Click(object sender, EventArgs e)
{
var wynik = await FilePicker.PickAsync(new PickOptions
{
PickerTitle = "Wybierz zdjęcie",
FileTypes = FilePickerFileType.Images
});
if (wynik != null)
{
_sciezkaObrazu = wynik.FullPath;
PodgladObraz.Source = _sciezkaObrazu;
}
}
private async void Dalej_Click(object sender, EventArgs e)
{
var dane = new DaneOsoby
{
Imie = PoleImie.Text ?? "",
Nazwisko = PoleNazwisko.Text ?? "",
DataUrodzenia = PoleData.Date,
Miejscowosc = PoleMiejscowosc.Text ?? "",
SciezkaObrazu = _sciezkaObrazu
};
await Navigation.PushAsync(new PodsumowanieOsobaPage(dane));
}
}
4. Stwórz drugie okno (podsumowanie)
Krok: Dodaj nową stronę.
- Kliknij prawym na projekt → Dodaj → Nowy element.
- Wybierz .NET MAUI ContentPage (XAML).
- Nazwij stronę: PodsumowanieOsobaPage.xaml.
<?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"
x:Class="FormularzOsobaApp.PodsumowanieOsobaPage"
Title="Podsumowanie">
<VerticalStackLayout Padding="16" Spacing="12" HorizontalOptions="Center">
<Label x:Name="PowitanieLabel"
FontSize="24"
FontAttributes="Bold"
HorizontalOptions="Center"/>
<Image x:Name="ZdjecieImage"
HeightRequest="220"
Aspect="AspectFit"/>
<Label x:Name="SzczegolyLabel" FontSize="16"/>
</VerticalStackLayout>
</ContentPage>
C#
using FormularzOsobaApp.Modele;
namespace FormularzOsobaApp;
public partial class PodsumowanieOsobaPage : ContentPage
{
public PodsumowanieOsobaPage(DaneOsoby dane)
{
InitializeComponent();
PowitanieLabel.Text = $"Witaj, {dane.Imie}!";
if (!string.IsNullOrEmpty(dane.SciezkaObrazu))
ZdjecieImage.Source = dane.SciezkaObrazu;
SzczegolyLabel.Text =
$"Nazwisko: {dane.Nazwisko}\n" +
$"Data ur.: {dane.DataUrodzenia:d}\n" +
$"Miejscowość: {dane.Miejscowosc}";
}
}
5. Ustaw startową stronę
W pliku App.xaml.cs zmień:
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new FormularzOsobaPage());
}
Efekt końcowy
- W pierwszym oknie wpisujesz dane i wybierasz zdjęcie.
- Klikasz „Dalej →”.
- W drugim oknie aplikacja pokazuje napis „Witaj, Imię”, szczegóły i wybrane zdjęcie.
