IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - Prvý .NET MAUI aplikácie Nové

V minulej lekcii, Úvod do .NET MAUI , sme si predstavili .NET MAUI a pripravili Visual Studio.

V dnešnom .NET MAUI tutoriále si vytvoríme svoju prvú multiplatformnú aplikáciu. Okrem iného si ukážeme, ako túto aplikáciu spustiť na platformách Android, iOS a Windows, a zoznámime sa s predvolenou štruktúrou.NET MAUI projektu.

Založenie prvej multiplatformnej aplikácie

Ako prvú .NET MAUI aplikáciu si vytvoríme klasickú "Hello world" aplikáciu, ktorej jediným účelom bude vypísanie textu. Otvoríme si Visual Studio a založíme si nový projekt typu .NET MAUI App:

Výber šablóny .NET MAUI projektu - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

Ako názov zadáme napríklad HelloMaui:

Zadanie názvu projektu - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

Framework vyberieme ten najnovší možný a potvrdíme vytvorenie projektu:

Výber verzie .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

Vygeneroval sa nám .NET MAUI projekt s pomerne jednoduchou ukážkovou aplikáciou.

Spustenie aplikácie

Tým, že vyvíjame na Windows, tak túto aplikáciu môžeme zostaviť a spustiť na nasledujúcich platformách:

  • Android – v emulátore alebo na fyzickom zariadení,
  • iOS – ak máme k dispozícii zariadenia s macOS alebo iOS,
  • Windows.
Nižšie sú uvedené postupy prípravy prostredia a spustenie aplikácie na týchto platformách. Aplikácia sa vždy zostavuje samostatne pre konkrétnu platformu, teda bez závislosti na ostatných platformách. Aplikáciu tak môžeme vyvíjať iba pre tie platformy, ktoré nás zaujímajú.

Na spustenie aplikácie na macOS musíme vyvíjať priamo na macOS.

  • Android emulátor

    Začneme s prípravou Android emulátora, ktorý nám umožní spúšťať systém Android v rámci Windows (alebo pokojne aj macOS). Daný systém sa potom bude zvonku správať ako by bežal samostatne na fyzickom zariadení. Vďaka emulátoru tak nemusíme mať k dispozícii žiadne fyzické Android zariadenie.

    Hardvérová akcelerácia

    Pre čo najvyšší výkon emulátora je vhodné mať vo funkciách Windows povolenú hardvérovú akceleráciu, pokiaľ ju náš počítač podporuje. Vo Windows vyhľadávaní si nájdeme Zapnúť alebo vypnúť funkcie systému Windows ( Turn Windows features on or off) a vyberieme túto možnosť. Ďalej zaškrtneme Platforma hypervízora Windows (Windows Hypervisor Platform) a potvrdíme:

    Povolenie hypervízora - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Počítač bude vyžadovať reštartovanie.

    Bližšie informácie k hardvérovej akcelerácii nájdeme v oficiálnej dokumentácii.

    Vytvorenie Android emulátora

    V hornej lište Visual Studio najprv vyberieme cieľový framework android:

    Výber cieľového frameworku – Android - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Ďalej vyberieme ako cieľové zariadenie Android Emulator:

    Voľba Android Emulator - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Teraz klikneme na tlačidlo Štart Android Emulator - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    . Pravdepodobne sa nám zobrazí dialóg na potvrdenie licenčných podmienok Android SDK (sada knižníc pre vývoj na Android). Podmienky potvrdíme:

    Potvrdenie licencie Android SDK - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Prípadné nasledujúce dialógy o povolení zmien na zariadení taktiež potvrdíme. Po potvrdení všetkých dialógov sa nám otvorí Android Device Manager s možnosťou vytvorenia východiskového emulátora:

    Vytvorenie predvoleného emulátora - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Ak sa Android Device Manager neotvoril, znova klikneme na tlačidlo Štart Android Emulator - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    .

    Vytvorenie emulátora potvrdíme a počkáme až sa emulátor stiahne a nainštaluje:

    Sťahovanie emulátora - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Po dokončení inštalácie môžeme Android Device Manager zavrieť.

    Emulátorov s rôznymi konfiguráciami si môžeme cez Android Device Manager vytvoriť ľubovoľné množstvo. Po inštalácii prvého emulátora Android Device Manager otvoríme voľbou ToolsAndroidAndroid Device Manager vo Visual Studio.

    Spustenie aplikácie v Android emulátore

    Teraz si už môžeme aplikáciu v našom emulátore spustiť. Uistíme sa, že máme vybraný Android ako cieľový framework a zároveň náš emulátor ako cieľové zariadenie:

    Výber nainštalovaného emulátora - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Po stlačení tlačidla Štart Tlačidlo Štart vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    sa aplikácia zostaví a spustí na emulátore. Prvé zostavenie aplikácie bude chvíľu trvať:

    Predvolené aplikácie v emulátore - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Aplikáciu ukončíme klasicky tlačidlom Stop Debugging Tlačidlo Stop Debugging vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    vo Visual Studio.

    Fyzické Android zariadenia

    Pokiaľ máme k dispozícii fyzické Android zariadenie, môžeme aplikáciu spustiť aj na ňom.

    Povolenie debuggovanie

    Zo všetkého najskôr musíme na našom zariadení povoliť ladenie (debuggovanie) cez USB. Prejdeme preto do nastavenia zariadenia av sekcii O telefóne ( About phone) si nájdeme Číslo zostavenia (Build number). Niekoľkokrát naň klikneme (počet kliknutí sa môže líšiť podľa verzie Android). Systém nás upozorní hláškou, že sme sa stali vývojármi.

    V nastavení nanovo budeme mať k dispozícii sekciu Možnosti pre vývojárov (Developer options). Otvoríme ju a aktivujeme Ladenie USB (USB debugging):

    Povolenie USB debugging - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Spustenie aplikácie na fyzickom Android zariadení

    Teraz už môžeme zariadenie pripojiť USB káblom k počítaču a prípadne potvrdiť dodatočný dialóg o povolení debuggovania cez USB. Naše zariadenie sa zobrazí medzi dostupnými zariadeniami vo Visual Studio:

    Výber fyzického Android zariadenia - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Ak sa nám zariadenie vo Visual Studio nezobrazuje, pravdepodobne nemáme v počítači nainštalované USB ovládače pre naše zariadenia. Ovládače získame na webe výrobcu zariadenia. Viac informácií prípadne nájdeme v oficiálnej dokumentácii.

    Aplikácia sa zostaví a spustí na našom Android zariadení, keď ho vyberieme a stlačíme tlačidlo Štart Tlačidlo Štart vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    :

    Predvolené aplikácie na fyzickom Android zariadení - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Aplikáciu ukončíme tlačidlom Stop Debugging Tlačidlo Stop Debugging vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    vo Visual Studio.

  • Spárovaný Mac

    V prípade, že chceme vyvíjať aplikácie pre iOS, tak potrebujeme mať k dispozícii nejaké Mac zariadenia so systémom macOS. Mac potrebujeme na to, aby sme na ňom mohli aplikácie spúšťať a publikovať na App Store. Keďže používame Visual Studio na Windows, musíme si s ním náš Mac tzv. spárovať.

    Na macOS sa iOS aplikácia spúšťa v tzv. iOS simulátore, ktorý nám umožňuje spúšťať systém iOS v rámci macOS. Daný systém sa potom zvonku chová ako by bežal samostatne na fyzickom zariadení. Vďaka simulátoru tak nemusíme mať k dispozícii žiadne fyzické iOS zariadenie.

    Príprava Macu

    Než s párovaním začneme, musíme mať naše Windows zariadenie a Mac pripojené k rovnakej sieti. Na Mac si potom musíme nainštalovať:

    • Mono – Zvolíme najnovšiu verziu.
    • Vývojové prostredie Xcode – .NET MAUI nie vždy vyžaduje jeho najnovšiu verziu. Akú verziu Xcode zvoliť k nami používanej verzii .NET zistíme na GitHub wiki MAUI v sekcii Release Versions. Pre inštaláciu konkrétnej verzie Xcode odporúčam použiť aplikáciu Xcodes, ktorá značne zjednodušuje správu viacerých inštalácií Xcode na jednom Macu. Alternatívne je možné konkrétnu verziu Xcode stiahnuť na xcodereleases.com Nainštalovaný Xcode musíme nakoniec ešte spustiť, aby sa doinštalovali všetky komponenty, av nastavení Xcode v sekcii Platforms prípadne doinštalovať iOS simulátory:
    Získanie iOS simulátora v Xcode - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Ďalej musíme mať v macOS ešte povolenú funkciu vzdialeného prihlásenia (remote login). V predvoľbách systému (System Preferences) prejdeme do sekcie Zdieľanie (Sharing), kde zaškrtneme Vzdialené prihlásenie (Remote Login) spolu s plným prístupom a povolíme ho všetkým užívateľom:

    Povolenie vzdialeného prihlásenia - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Všimnime si IP adresy nášho Macu, tú budeme neskôr potrebovať.

    Spárovanie macOS s Visual Studio

    Teraz sa už môžeme vrátiť späť do Visual Studio na Windows. V hornom menu vyberieme ToolsiOSPair to Mac. V novo otvorenom okne buď zvolíme náš Mac a klikneme na Connect…, alebo klikneme na Add Mac… a pripojíme sa k nemu pomocou jeho IP adresy:

    Pripojenie sa k Macu pomocou IP adresy - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Budeme vyzvaní na zadanie prihlasovacích údajov k nášmu účtu na Macu:

    Prihlásenie sa k Macu - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Po prihlásení sa nám na Mac doinštalujú potrebné knižnice a nástroje, môže to chvíľu trvať. Ak sme sa úspešne prihlásili, spoznáme podľa ikony u nášho Macu:

    Pripojený Mac - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Pri každom ďalšom spustení Visual Studio stačí pre opätovné spárovanie zopakovať tento postup.

    Automatické spárovanie

    V nastavení Visual Studio potom prípadne môžeme povoliť automatické spárovanie pri spustení Visual Studio. V hornom menu vyberieme ToolsOptions… a prejdeme do sekcie XamariniOS Settings. Tu môžeme zaškrtnúť možnosť Enable auto connection to known Macs. Taktiež sa uistíme, že máme zaškrtnutú možnosť Remote Simulator to Windows, vďaka ktorej budeme môcť ovládať iOS Simulátor priamo z Windows:

    iOS Settings - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Podrobný a vždy aktuálny návod na spárovanie macOS s Visual Studio nájdeme v oficiálnej dokumentácii.

    Spustenie aplikácie v iOS simulátore

    Teraz si môžeme aplikáciu konečne spustiť. V hornej lište Visual Studio najprv vyberieme cieľový framework ios:

    Výber cieľového frameworku – iOS - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Ďalej vyberieme ako cieľové zariadenie niektorý z dostupných iOS simulátorov:

    Výber iOS simulátora vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Po stlačení tlačidla Štart Tlačidlo Štart vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    sa aplikácia zostaví a spustí na simulátore. Prvé zostavenie aplikácie bude chvíľu trvať:

    Predvolené aplikácie v iOS simulátore - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    iOS simulátor je možné si zobraziť aj priamo na Mace, stačí len vyhľadať a spustiť aplikáciu Simulator.app:

    Predvolené aplikácie v iOS simulátore - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Aplikáciu ukončíme klasicky tlačidlom Stop Debugging Tlačidlo Stop Debugging vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    vo Visual Studio.

    Hot reštart

    Pokiaľ máme k dispozícii fyzické iOS zariadenie, môžeme naň našu aplikáciu nahrať pomocou technológie hot restart. Táto technológia má však isté obmedzenia a navyše vyžaduje platený Apple Developer účet. Viac informácií nájdeme v oficiálnej dokumentácii.

  • Spustenie aplikácie na Windows

    Spustenie aplikácie na Windows je pomerne priamočiare. V hornej lište Visual Studio najprv vyberieme cieľový framework windows:

    Výber cieľového frameworku – Windows - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Po stlačení tlačidla Štart Tlačidlo Štart vo Visual Studio - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
    sa aplikácia zostaví, nainštaluje a spustí. Prvé zostavenie aplikácie bude chvíľu trvať:

    Predvolené aplikácie vo Windows - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

    Vývojársky režim

    Ešte pred inštaláciou aplikácie pravdepodobne budete vyzvaní na povolenie vývojárskeho režimu, ak ste tak ešte neurobili. V nastavení Windows stačí prejsť do sekcie Systém (System) → Pre vývojárov (For developers) a povoliť Vývojársky režim (Developer Mode):

    Povolenie vývojárskeho režimu - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
.NET MAUI je pomerne zložitou technológiou. Snaží sa totiž prepojiť množstvo rôznych komponentov, ktoré sú vyvíjané nezávisle na sebe rôznymi spoločnosťami. Nie je preto prekvapením, že sa raz za čas môžu objaviť nejaké chyby a problémy. Vždy aktuálny postup zostavenia a spustenia .NET MAUI aplikácie nájdeme v oficiálnej dokumentácii. Ak máme s čímkoľvek problém, nahliadneme najprv tam. Okrem iného sa tam nachádza aj prehľad najčastejšie sa vyskytujúcich problémov a ich riešení. Prehľad užívateľovi nahlásených chýb a potenciálnych riešení nájdeme prípadne v GitHub repositári .NET MAUI.

Štruktúra .NET MAUI projektu

Keď už vieme, ako projekt zostaviť a spustiť, tak sa môžeme pozrieť akými adresármi a súbormi je v predvolenom stave tvorený:

Projekt v Solution Explorer - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET

Pre nás sú najzaujímavejšie:

  • Platforms/ – Adresár pre súbory s kódom špecifickým pre konkrétnu platformu.
  • Resources/ – Adresár pre obrázky, ikony, fonty, štýly a ďalšie súbory, ktoré chceme v aplikácii používať.
  • App.xaml a App.xaml.cs – Súbory, ktorých obsah reprezentuje celú aplikáciu.
  • AppShell.xaml a AppShell.xaml.cs – Súbory, ktorých obsah reprezentuje navigáciu aplikácie.
  • MainPage.xaml a MainPage.xaml.cs – Súbory, ktorých obsah reprezentuje hlavnú stránku aplikácie.
  • MauiProgram.cs – Vstupný bod aplikácie.
Hlavná stránka MainPage

V .NET MAUI sú všetky komponenty aplikácie typicky tvorené dvoma súbormi:

  • XAML súborom popisujúcim vzhľad a obsah komponentu pomocou značkovacieho jazyka XAML. Tento súbor teda predstavuje prezentačnú časť daného komponentu.
  • C# súborom obsahujúcim triedu s logikou komponentu – táto trieda a jej kód sa tiež označujú ako code behind.
Každý komponent je vždy tvorený C# triedou a prípadne nepovinne ešte jedným XAML súborom.

Code behind

Pozrime sa do súboru MainPage.xaml.cs, teda na code behind hlavnej stránky aplikácie:

namespace HelloMaui
{
    public partial class MainPage : ContentPage
    {
        int count = 0;

        public MainPage()
        {
            InitializeComponent();
        }

        private void OnCounterClicked(object sender, EventArgs e)
        {
            count++;

            if (count == 1)
                CounterBtn.Text = $"Clicked {count} time";
            else
                CounterBtn.Text = $"Clicked {count} times";

            SemanticScreenReader.Announce(CounterBtn.Text);
        }
    }
}

Vidíme, že v C# kóde je hlavná stránka aplikácie reprezentovaná triedou MainPage, ktorá dedí od triedy ContentPage. S code behind budeme pracovať až v budúcich lekciách. Zatiaľ tu iba vymažeme metódu OnCounterClicked() a atribút count obsahujúci počet kliknutí:

namespace HelloMaui
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }
}

Metóda OnCounterClicked() rieši zmenu obsahu tlačidla pri kliknutí. Tlačidlo ani túto metódu však nebudeme potrebovať.

XAML

Teraz si otvoríme súbor MainWindow.xaml so XAML kódom stránky:

<?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="HelloMaui.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            <Image
                Source="dotnet_bot.png"
                HeightRequest="185"
                Aspect="AspectFit"
                SemanticProperties.Description="dot net bot in a race car number eight" />

            <Label
                Text="Hello, World!"
                Style="{StaticResource Headline}"
                SemanticProperties.HeadingLevel="Level1" />

            <Label
                Text="Welcome to &#10;.NET Multi-platform App UI"
                Style="{StaticResource SubHeadline}"
                SemanticProperties.HeadingLevel="Level2"
                SemanticProperties.Description="Welcome to dot net Multi platform App U I" />

            <Button
                x:Name="CounterBtn"
                Text="Click me"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Fill" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Vidíme tu elementy:

  • <ContentPage> – samotná stránka,
  • <ScrollView> – umožňuje scrollovať svojim obsahom,
  • <VerticalStackLayout> – slúži na vkladanie obsahu pod seba,
  • <Image> – obrázok,
  • <Label> – textový popisok,
  • <Button> – tlačidlo.
XAML a tieto elementy si bližšie popíšeme ďalej v kurze. Ako už bolo povedané, v našej jednoduchej "Hello world" aplikácii budeme chcieť vypísať iba krátky text Pozdrav z .NET MAUI aplikácie. Využijeme na to element <Label>, ktorým nahradíme východiskový obsah stránky:
<?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="HelloMaui.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
            <Label>
                Pozdrav z .NET MAUI aplikace
            </Label>
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Výsledok

Aplikáciu spustíme, bude vyzerať nasledovne:

  • .<> Prvá aplikácia – Android - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
  • .<> Prvá aplikácia – iOS - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
  • .<> Prvá aplikácia – Windows - .NET MAUI - Multiplatformné aplikácie v C# .NET - .NET MAUI - Multiplatformné aplikácie v C# .NET
Máme hotovú svoju prvú .NET MAUI aplikáciu, gratulujeme! Zdrojové kódy tejto aplikácie máte prípadne k dispozícii nižšie na stiahnutie.

V budúcej lekcii, Pozíciovanie v .NET MAUI , sa naučíme pozíciovať ovládacie prvky na stránke. Spomenieme layouty, absolútnu a relatívnu pozíciu, vonkajšie a vnútorné okraje a veľkosť.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 4x (226.81 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Úvod do .NET MAUI
Všetky články v sekcii
.NET MAUI - Multiplatformné aplikácie v C# .NET
Preskočiť článok
(neodporúčame)
Pozíciovanie v .NET MAUI
Článok pre vás napísal Radek Vymětalík
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
...
Aktivity