Ćwiczenie — tworzenie konwertera MAUI platformy .NET
W tym ćwiczeniu dodasz konwerter do aplikacji Weather utworzonej w poprzednim ćwiczeniu. Pierwszy konwerter konwertuje wartość wyliczenia na zasób obrazu. Drugi konwerter konwertuje temperaturę z Fahrenheita na Stopnie Celsjusza.
Konwertowanie na obraz
Bieżącym kontekstem powiązania strony aplikacji pogodowej jest obiekt danych z właściwościami opisującym prognozę pogody. Jedną z tych właściwości jest warunek nieba, który jest wyliczeniem. Po wyświetleniu informacji o pogodzie aplikacja powinna wyświetlić ikonę, aby ułatwić użytkownikowi wizualizowanie stanu nieba. Aby wyświetlić te ikony, wyliczenie musi zostać przekonwertowane na zasób obrazu.
Otwórz projekt Weather Sample z poprzedniego ćwiczenia w programie Visual Studio lub Visual Studio Code.
Dodaj folder do projektu o nazwie Konwertery.
Dodaj nową klasę do folderu Konwertery o nazwie WeatherConditionToImageConverter.cs.
Otwórz WeatherConditionToImageConverter.cs w edytorze kodu i zastąp cały kod następującym kodem:
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(); }
Ten kod definiuje
WeatherConditionToImageConverter
konwerter wWeatherClient.Converters
przestrzeni nazw. Ten konwerter oczekujeWeatherType
wyliczenia jako wartości i zwraca zasób obrazu na podstawie tej wartości.Otwórz plik MainPage.xaml.
W elemenie głównym dodaj nową przestrzeń nazw XML o nazwie
cvt
i zamapuj ją na przestrzeń nazwWeatherClient.Converters
platformy .NET.<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">
Dodaj wystąpienie
WeatherConditionToImageConverter
konwertera do zasobów strony przy użyciu kluczaWeatherConditionToImageConverter
:<ContentPage ... <ContentPage.Resources> <cvt:WeatherConditionToImageConverter x:Key="WeatherConditionToImageConverter" /> </ContentPage.Resources>
Znajdź kontrolkę
<Image>
w plikuGrid.Row="0"
.Zmień właściwość na
Source="question.png"
następujące powiązanie:Source="{Binding Condition, Converter={StaticResource WeatherConditionToImageConverter}}"
Uruchamianie projektu.
Zwróć uwagę, że po naciśnięciu przycisku Odśwież pole Warunek zmieni się na ikonę: