Condividi tramite


FuncConverter

FuncConverter offre la possibilità di definire un'implementazione IValueConverter inline durante la compilazione dell'interfaccia utente. Un vantaggio aggiuntivo dell'uso dell'implementazione consiste nel FuncConverter fatto che offre un modo sicuro per eseguire le conversioni. Il pacchetto di markup C# usa internamente l'opzione FuncConverterdi conversione inline nel Bind metodo di estensione.

Nota

FuncConverter supporta solo un singolo Binding valore, se è necessario MultiBinding il supporto si riferisce a FuncMultiConverter.

Il convertitore offre molti modi diversi per definire la conversione in base alla quantità di informazioni necessarie.

FuncConverter<TSource>

L'implementazione FuncConverter<TSource> consente di definire un processo di conversione che fornisce solo un valore in ingresso sicuro di tipo.

Nell'esempio seguente viene illustrato come creare un convertitore che convertirà tra un TimeSpan oggetto e un double oggetto espresso in secondi:

var converter = new FuncConverter<TimeSpan>(
    convert: (time) => time.TotalSeconds,
    convertBack: (value) => TimeSpan.FromSeconds((double)value));

Entrambi i convert parametri e convertBack sono facoltativi per consentire agli sviluppatori di definire solo ciò che è necessario.

Si noterà che il metodo non viene visualizzato come sicuro per il convertBack tipo qui.

FuncConverter<TSource, TDest>

L'implementazione FuncConverter<TSource, TDest> consente di definire un processo di conversione che fornisce un valore in ingresso sicuro del tipo e un valore restituito indipendente dai tipi.

Usando lo stesso esempio riportato in precedenza, è possibile rendere il convertBack tipo di implementazione sicuro e più semplice da leggere:

var converter = new FuncConverter<TimeSpan, double>(
    convert: (time) => time.TotalSeconds,
    convertBack: (seconds) => TimeSpan.FromSeconds(seconds));

Entrambi i convert parametri e convertBack sono facoltativi per consentire agli sviluppatori di definire solo ciò che è necessario.

FuncConverter<TSource, TDest, TParam>

L'implementazione FuncConverter<TSource, TDest, TParam> consente di definire un processo di conversione che fornisce un valore in ingresso indipendente dai tipi, un valore restituito indipendente dai tipi e un tipo sicuro ConverterParameter.

Usando lo stesso esempio riportato in precedenza, è possibile includere da ConverterParameterBinding:

var converter = new FuncConverter<TimeSpan, double, int>(
    convert: (time, offset) => time.TotalSeconds + offset,
    convertBack: (seconds, offset) => TimeSpan.FromSeconds(seconds - offset));

Entrambi i convert parametri e convertBack sono facoltativi per consentire agli sviluppatori di definire solo ciò che è necessario.

API

È possibile trovare il codice sorgente per la FuncConverter funzionalità nel repository GitHub di .NET MAUI Community Toolkit.