En velstruktureret .NET MAUI-applikation starter med korrekt initialisering i App.xaml.cs, hvor MainPage sættes til en instans af AppShell. Dette danner grundlaget for al videre navigation og layout. Når kun én content page er defineret i en Shell, deaktiveres navigationselementer automatisk, hvilket gør flyout-menuen usynlig. For at aktivere navigation kræves mindst to ShellContent-elementer.
I AppShell.xaml kan flyout-mode aktiveres eksplicit. Dette involverer opsætning af baggrundsfarve, ikon for MainPage, samt tilføjelse af et flyout-header og yderligere flyout-elementer. Billedfiler, som bruges som ikoner, placeres i Resources/Images-mappen og kan hentes direkte fra det relevante GitHub-repository.
Udviklingen fortsætter med at tilføje nye content pages til projektet. Dette gøres gennem kontekstmenuen i projektmappen, hvor nye .NET MAUI ContentPages oprettes med navne som SettingsPage.xaml, CategoriesPage.xaml, CustomersPage.xaml, CustomerDetailPage.xaml, EmployeesPage.xaml og ProductsPage.xaml.
Når en side som CategoriesPage.xaml åbnes, afsløres det, at Visual Studio endnu ikke understøtter et grafisk design-view for XAML i MAUI, hvilket kræver manuel redigering af markup. Siden konfigureres ved at ændre Title og tekstindholdet. I Toolbox-panelet i Visual Studio kan man søge efter kontroller som Button eller ProgressBar og trække dem direkte ind i XAML-markupen.
En knap tilføjes med tekstværdien "Hello!", og senere ændres denne til "Click Me" med en bredde på 100 enheder. Ændringerne reflekteres øjeblikkeligt i applikationen takket være XAML Hot Reload-funktionen, hvilket fremskynder UI-udviklingsprocessen betydeligt.
Knapper kan også forsynes med begivenhedshåndtering. Ved at give knappen et navn, f.eks. ClickMeButton, og tilføje en Clicked-event, bliver det muligt at skrive C#-kode, som reagerer på brugerinteraktion. Eventhandleren kan eksempelvis sætte knappens tekst til det aktuelle klokkeslæt, hvilket demonstrerer hvordan UI-elementer dynamisk kan ændres under kørsel:
Når projektet debugges og køres på både desktop og mobile enheder, giver Visual Studio statuslinjen feedback omkring udrulningsstatus og forbindelse til XAML Hot Reload. Det er vigtigt at vente på fuld udrulning før interaktion med applikationen, især på emulatorer, hvor tidligere instanser kan forstyrre.
Navigationen testes ved at åbne flyout-menuen og navigere til fx CategoriesPage. Klik på knappen vil nu vise klokkeslættet som tekst. Dette understreger integrationen mellem UI og logik.
Det er også centralt at bemærke, at selvom Visual Studio i skrivende stund ikke understøtter et grafisk design-view for MAUI XAML, kompenseres dette af den stærke Hot Reload-funktionalitet og det tætte samspil mellem markup og bagvedliggende logik. Den manuelle markup-tradition opfordrer til bedre forståelse af layoutstrukturer og kontrolelementers hierarki.
For at opnå en mere professionel oplevelse for brugeren, bør udvikleren overveje konsekvent ikonografi, ensartet navigation og optimeret performance ved deployment. Ressourcehåndtering bør være systematiseret, især når ikoner og billeder bruges på tværs af sider. Fejl, som opstår under runtime, skal håndteres med brugervenlige meldinger fremfor at lade applikationen kollapse.
Til sidst er det vigtigt at forstå, at MAUI-projektets struktur og navigationsmønster er fundamentale for videreudvikling. Klar opdeling i content pages og en veldefineret shell gør projektet skalerbart og lettere at vedligeholde. I produktionssammenhæng bør man tilføje logning, internationalisering, accessibility-understøttelse og anvende dependency injection til at strukturere forretningslogik og services.
Hvad er nyt i C# 9, .NET 5 og senere versioner? En gennemgang af de vigtigste funktioner
C# og .NET-platformen har gennemgået markante opdateringer i de senere år, og udviklere har fået nye værktøjer til at forbedre både udviklingshastighed og applikationernes ydeevne. Fra C# 9 til C# 11 og .NET 6 og 7 er der blevet introduceret flere vigtige funktioner, der gør arbejdet med kode både enklere og mere fleksibelt. Her ser vi på nogle af de mest markante opdateringer, og hvordan de kan hjælpe udviklere i deres daglige arbejde.
I C# 9, der blev lanceret sammen med .NET 5, blev der blandt andet introduceret funktioner som Record Types og init-only settere. Record types er en ny datatype, der gør det lettere at definere immutabele objekter, som er særligt nyttige i funktionelle programmeringsscenarier. Init-only settere gør det muligt at konfigurere et objekts tilstand ved oprettelsen, mens det stadig bevares som immutabelt efterfølgende. Denne ændring har stor betydning for udvikling af applikationer, hvor uforanderlige objekter spiller en central rolle.
Top-level statements, der blev indført i C# 9, giver udviklere mulighed for at skrive koden direkte i programmet uden først at definere en Main-metode. Dette forenkler og forkorter kode, især i små applikationer eller skripter, og gør det nemmere at komme hurtigt i gang med udviklingen. Derudover blev Target-typed new introduceret, som gør det muligt at undgå at gentage typen i en ny objektinstans, når kompilatoren kan udlede den ud fra konteksten.
I C# 10 og .NET 6 blev der tilføjet implicit import af navnerum som standard, hvilket sparer udviklere for at skulle skrive “using”-direktiver øverst i hver fil. Denne ændring gør koden mere kompakt og overskuelig. Derudover blev det muligt at kontrollere null-værdier i metodens parametre uden at skulle skrive ekstra logik, hvilket letter fejlhåndteringen.
Med C# 11 og .NET 7 blev der blandt andet introduceret Raw String Literals, som gør det muligt at arbejde med flere linjers tekst uden at skulle escape specialtegn. Dette kan være en stor lettelse, når man arbejder med JSON, XML eller andre tekstformater, der indeholder mange specialtegn. Derudover blev generisk matematik tilføjet, som åbner op for, at matematiske operationer kan udføres på generiske typer uden at miste ydeevne eller fleksibilitet.
Ud over de tekniske opdateringer er der også forbedringer i værktøjer og biblioteker. For eksempel er der blevet arbejdet på at gøre brugen af GitHub-repositorier lettere for både udviklere og dem, der ønsker at bidrage til et projekt. Det er nu nemmere at hente kode, løse problemer og give feedback gennem GitHub, hvilket gør samarbejde mere effektivt.
Desuden er det værd at bemærke, at der er en række ressourcer tilgængelige online, som udviklere kan benytte sig af. Microsoft-dokumentationen er altid en pålidelig kilde, og dotnet-værktøjet giver en række nyttige funktioner, der gør udvikling lettere. Desuden er der mange videoer og blogs, som Scott Hanselman deler, og som giver indblik i de nyeste tendenser og bedste praksis inden for .NET og C#.
Vigtigt er det også, at udviklere ikke kun skal fokusere på de tekniske funktioner, men også forstå, hvordan man bedst integrerer dem i praksis. Det handler ikke kun om at bruge de nyeste funktioner, men om at forstå deres anvendelse i en større kontekst og vælge den rette funktion baseret på applikationens behov. For eksempel kan Record types være nyttige i scenarioer, hvor du arbejder med data, der ikke skal ændres, mens init-only settere er ideelle, når du har brug for at sikre, at objekter kun kan konfigureres ved oprettelsen.
Desuden er det vigtigt at have en god forståelse af værktøjerne til test og fejlfinding. Når du implementerer nye funktioner, som for eksempel de funktioner, der er tilgængelige i de nyeste versioner af C# og .NET, skal du være opmærksom på, hvordan du bedst tester og monitorerer din kode. Testdækning, ydeevneovervågning og brug af benchmarkværktøjer som Benchmark.NET kan hjælpe med at sikre, at din applikation kører effektivt og fejlfrit.
Hvordan John Holland Skabte Den Moderne Ubåd: En Revolution i Maritim Krigsførelse
Hvordan kontinenternes udvikling og begreber om kontrol, konversion og konturer former vores forståelse af samfundet
Hvordan Reagan og Bush Brugte Race i Deres Rhetorik: Uddannelse, Økonomi og Kriminalitet

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский