Oefening: een .NET MAUI-conversieprogramma maken
In deze oefening voegt u een conversieprogramma toe aan de Weer-app die u in de vorige oefening hebt gemaakt. Met het eerste conversieprogramma wordt een opsommingswaarde geconverteerd naar een afbeeldingsresource. De tweede converter converteert de temperatuur van Fahrenheit naar Celsius.
Converteren naar een afbeelding
De huidige bindingscontext van de pagina van de weer-app is een gegevensobject met eigenschappen die de weersvoorspelling beschrijven. Een van deze eigenschappen is de luchtvoorwaarde, een opsomming. Wanneer er weerinformatie wordt weergegeven, moet de app een pictogram weergeven om de gebruiker te helpen de skyvoorwaarde te visualiseren. Als u deze pictogrammen wilt weergeven, moet de opsomming worden geconverteerd naar een afbeeldingsresource.
Open het weervoorbeeldproject uit de vorige oefening in Visual Studio of Visual Studio Code.
Voeg een map toe aan het project met de naam Conversieprogramma's.
Voeg een nieuwe klasse toe aan de map Conversieprogramma's met de naam WeatherConditionToImageConverter.cs.
Open WeatherConditionToImageConverter.cs in de code-editor en vervang alle code door de volgende code:
using System.Globalization; using WeatherClient.Models; namespace WeatherClient.Converters; internal class WeatherConditionToImageConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { WeatherType weatherCondition = (WeatherType)value!; return weatherCondition switch { Models.WeatherType.Sunny => ImageSource.FromFile("sunny.png"), Models.WeatherType.Cloudy => ImageSource.FromFile("cloud.png"), _ => ImageSource.FromFile("question.png") }; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => throw new NotImplementedException(); }
Deze code definieert het
WeatherConditionToImageConverter
conversieprogramma in deWeatherClient.Converters
naamruimte. Dit conversieprogramma verwacht de inventarisatie als deWeatherType
waarde en retourneert een afbeeldingsresource op basis van die waarde.Open het bestand MainPage.xaml .
Voeg op het hoofdelement een nieuwe XML-naamruimte toe met de naam
cvt
en wijs deze toe aan de .NET-naamruimteWeatherClient.Converters
.<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:cvt="clr-namespace:WeatherClient.Converters" x:Class="WeatherClient.MainPage">
Voeg een exemplaar van het
WeatherConditionToImageConverter
conversieprogramma toe aan de resources van de pagina, met de sleutel vanWeatherConditionToImageConverter
:<ContentPage ... <ContentPage.Resources> <cvt:WeatherConditionToImageConverter x:Key="WeatherConditionToImageConverter" /> </ContentPage.Resources>
Zoek het
<Image>
besturingselement inGrid.Row="0"
.Wijzig de
Source="question.png"
eigenschap in de volgende binding:Source="{Binding Condition, Converter={StaticResource WeatherConditionToImageConverter}}"
Voer het project uit.
Wanneer u op de knop Vernieuwen drukt, verandert het veld Voorwaarde in een pictogram: