Freigeben über


ImageResourceConverter

ImageResourceConverter ist ein Konverter, der eingebettete Bildressourcen-ID in seine ImageSource konvertiert. Man spricht von einer eingebetteten Bildressource, wenn einem Projekt ein Bild hinzugefügt wurde, dessen Buildaktion auf Eingebettete Ressourcefestgelegt ist. Die ID ist der vollqualifizierte Name, sprich der Namespace des Projekts + der Ressourcenname. Im Beispiel mit einem Projekt mit dem Namen CommunityToolkit.Maui.Sample würde eine Reihe von verschachtelten Ordnern von Resources/Embedded und ein Bild mit dem Namen dotnetbot.png ID erzeugt werden:

CommunityToolkit.Maui.Sample + Resources.Embedded + dotnetbot.png

was zu folgenden Ergebnissen führt:

CommunityToolkit.Maui.Sample.Resources.Embedded.dotnetbot.png

BaseConverter-Eigenschaften

Die folgenden Eigenschaften werden in der Basisklasse public abstract class BaseConverter implementiert:

Eigenschaft Beschreibung
DefaultConvertReturnValue Standardwert, der zurückgegeben werden soll, wenn IValueConverter.Convert(object?, Type, object?, CultureInfo?) eine Exception auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.
DefaultConvertBackReturnValue Standardwert, der zurückgegeben werden soll, wenn IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) eine Exception auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.

ICommunityToolkitValueConverter-Eigenschaften

Die folgenden Eigenschaften werden im public interface ICommunityToolkitValueConverter implementiert:

Eigenschaft Typ Beschreibung
DefaultConvertReturnValue object? Standardwert, der zurückgegeben werden soll, wenn IValueConverter.Convert(object?, Type, object?, CultureInfo?) eine Exception auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.
DefaultConvertBackReturnValue object? Standardwert, der zurückgegeben werden soll, wenn IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) eine Exception auslöst. Dieser Wert wird verwendet, wenn CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters auf true festgelegt ist.

Syntax

XAML

Einbinden des XAML-Namespace

Um das Toolkit in XAML verwenden zu können, muss der folgende xmlns-Abschnitt zu Ihrer Seite oder Ansicht hinzugefügt werden:

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Der folgende Abschnitt:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

Würde dann geändert werden, um xmlns einzubinden:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

Verwenden des ImageResourceConverter

ImageResourceConverter kann wie folgt in XAML verwendet werden:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="CommunityToolkit.Maui.Sample.Pages.Converters.ImageResourceConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:ImageResourceConverter x:Key="ImageResourceConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <Image Source="{Binding MyImageResource, Converter={StaticResource ImageResourceConverter}}" />

</ContentPage>

C#

ImageResourceConverter kann wie folgt in C# verwendet werden:

class ImageResourceConverterPage : ContentPage
{
    public ImageResourceConverterPage()
    {
        var image = new Image();

        image.SetBinding(
            Image.SourceProperty, 
            new Binding(
                static (ViewModel vm) => vm.MyImageResource, 
                converter: new ImageResourceConverter())); 

        Content = label;        
    }
}

C#-Markup

Das Paket CommunityToolkit.Maui.Markup bietet eine viel präzisere Möglichkeit, diesen Konverter in C# zu verwenden.

using CommunityToolkit.Maui.Markup;

class ImageResourceConverterPage : ContentPage
{
    public ImageResourceConverterPage()
    {
        Content = new Image()
            .Bind(
                Label.SourceProperty, 
                static (ViewModel vm) => vm.MyImageResource,
                converter: new ImageResourceConverter()); 
    }
}

Beispiele

Ein Beispiel für diesen Konverter in Aktion finden Sie in der Beispielanwendung für das .NET MAUI Community Toolkit.

API

Sie finden den Quellcode für ImageResourceConverter über das GitHub-Repository für das .NET MAUI Community Toolkit.