Übung: Erstellen eines .NET MAUI-Konverters
In dieser Übung fügen Sie der in der vorherigen Übung erstellten Wetter-App einen Konverter hinzu. Der erste Konverter konvertiert einen Enumerationswert in eine Bildressource. Der zweite Konverter wandelt die Temperatur von Fahrenheit in Celsius um.
In ein Bild konvertieren
Der aktuelle Bindungskontext der Wetter-App-Seite ist ein Datenobjekt mit Eigenschaften, die die Wettervorhersage beschreiben. Eine dieser Eigenschaften ist die Wetterlage, bei der es sich um eine Enumeration handelt. Wenn Wetterinformationen angezeigt werden, sollte die App ein Symbol anzeigen, um Benutzern zu helfen, die Wetterlage zu visualisieren. Zum Anzeigen dieser Symbole muss die Enumeration in eine Bildressource konvertiert werden.
Öffnen Sie das Projekt „Weather Sample“ aus der vorherigen Übung in Visual Studio oder Visual Studio Code.
Fügen Sie dem Projekt einen Ordner mit dem Namen Converters hinzu.
Fügen Sie dem Ordner Converters eine neue Klasse namens WeatherConditionToImageConverter.cs hinzu.
Öffnen Sie WeatherConditionToImageConverter.cs im Code-Editor, und ersetzen Sie den gesamten Code durch folgenden:
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(); }Dieser Code definiert den Konverter
WeatherConditionToImageConverterim NamespaceWeatherClient.Converters. Dieser Konverter erwartet dieWeatherType-Enumeration als Wert und gibt eine Bildressource basierend auf diesem Wert zurück.Öffnen Sie die Datei MainPage.xaml.cs.
Fügen Sie im Stammelement einen neuen XML-Namespace namens
cvthinzu, und ordnen Sie ihn dem .NET-NamespaceWeatherClient.Converterszu.<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">Fügen Sie eine Instanz des Konverters
WeatherConditionToImageConverterzu den Ressourcen der Seite mit dem SchlüsselWeatherConditionToImageConverterhinzu:<ContentPage ... <ContentPage.Resources> <cvt:WeatherConditionToImageConverter x:Key="WeatherConditionToImageConverter" /> </ContentPage.Resources>Suchen Sie das Steuerelement
<Image>inGrid.Row="0".Ändern Sie die Eigenschaft
Source="question.png"in die folgende Bindung:Source="{Binding Condition, Converter={StaticResource WeatherConditionToImageConverter}}"Führen Sie das Projekt aus.
Beachten Sie, dass beim Auswählen der Schaltfläche " Aktualisieren " das Feld "Bedingung " zu einem Symbol wechselt: