Convert-Methode
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern

IValueConverter.Convert Method

Ändert die Quelldaten vor der Übergabe an das Ziel zur Anzeige in der Benutzeroberfläche.

Syntax


object Convert(
  object value, 
  Type targetType, 
  object parameter, 
  string language
)

Parameter

value

Typ: System.Object [.NET] | Platform::Object [C++]

Die Quelldaten, die ans Ziel übergeben werden.

targetType

Typ: System.Type [.NET] | TypeName [C++]

Der Typ der Zieleigenschaft. Dadurch wird ein anderer Typ verwendet, abhängig davon, ob Sie mit Microsoft .NET oder Visual C++-Komponentenerweiterungen (C++/CX) programmieren. Siehe Hinweise.

parameter

Typ: System.Object [.NET] | Platform::Object [C++]

Ein optionaler Parameter, der in der Konverterlogik verwendet werden soll.

language

Typ: System.String [.NET] | Platform::String [C++]

Die Sprache der Konvertierung.

Rückgabewert

Typ: System.Object [.NET] | Platform::Object [C++]

Der Wert, der an die Zielabhängigkeitseigenschaft übergeben werden soll.

Hinweise

Der targetType-Parameter der Convert-Methode verwendet verschiedene Techniken zum Berichten der Typsysteminformationen, je nachdem, ob Sie mit .NET oder C++/CX programmieren.

  • Bei .NET gibt dieser Parameter eine Instanz des Typs System.Type weiter.
  • Für C++/CX übergibt dieser Parameter einen TypeName-Strukturwert. TypeName::Kind enthält den einfachen Zeichenfolgennamen des Typs, ähnlich wie Type.Name in .NET.

Wenn der Konverter durch das Bindungsmodul aufgerufen wird, wird der targetType-Wert übergeben, indem nach dem Eigenschaftentyp der Zielabhängigkeitseigenschaft gesucht wird. Sie können diesen Wert in der Convert-Implementierung aus einen von zwei Gründen verwenden:

  • Der Konverter erwartet, dass er immer Objekte eines bestimmten Typs zurückgeben wird, und Sie möchten sicherstellen, dass die Bindung, für die der Konverter aufgerufen wird, den Konverter ordnungsgemäß verwendet. Wenn nicht, können Sie einen Fallbackwert zurückgeben, oder Sie lösen eine Ausnahme aus (siehe jedoch "Ausnahmen von Konvertern" unten).
  • Der Konverter kann mehr als einen Typ zurückgeben, und Sie möchten, dass der Konverter durch die Verwendung informiert wird, welcher Typ zurückgegeben werden soll. Sie können beispielsweise eine Objekt-zu-Objekt-Konvertierung und eine Objekt-zu-Zeichenfolge-Konvertierung innerhalb des gleichen Konvertercodes implementieren.

language wird aus dem ConverterLanguage-Wert einer bestimmten Bindung abgeleitet und nicht von Systemwerten. Daher sollten Sie davon ausgehen, dass dies möglicherweise eine leere Zeichenfolge ist.

parameter stammt aus dem ConverterParameter-Wert einer bestimmten Bindung und ist standardmäßig null. Wenn der Konverter Parameter verwendet, um zu ändern, was er zurückgibt, erfordert dies normalerweise eine Konvention zum Überprüfen, was durch die Bindung übergeben wird und was der Konverter behandelt. Bei einer allgemeinen Konvention werden Zeichenfolgen übergeben, die Modi für den Konverter benennen, die zu unterschiedliche Rückgabewerten führen. Beispielsweise können Sie über die Modi "Einfach" und "Verbose" verfügen, die verschiedene Zeichenfolgen zurückgeben, die jeweils für die Anzeige in verschiedenen UI-Steuerelementtypen und -Layouts geeignet sind.

Ausnahmen der Konverter

Das Datenbindungsmodul fängt keine Ausnahmen ab, die von einem vom Benutzer bereitgestellten Konverter ausgelöst werden. Alle Ausnahmen, die von der Convert-Methode ausgelöst werden, und alle nicht abgefangenen Ausnahmen, die von Methoden ausgelöst werden, die von der Convert-Methode aufgerufen werden, werden als Laufzeitfehler behandelt. Wenn Sie den Konverter in Situationen verwenden, in denen die Bindung Fallbacks verwendet oder angemessene Ergebnisse auch dann anzeigt, wenn ein Konvertierungsfehler auftritt, sollten Sie erwägen, den Konverter so einzustellen, dass DependencyProperty.UnsetValue zurückgeben und keine Ausnahmen ausgelöst werden. Die DependencyProperty.UnsetValue-Eigenschaft ist ein Sentinelwert, der besondere Bedeutung im System der Abhängigkeitseigenschaften hat, und für übergebene Bindung verwendet dieser Wert die FallbackValue-Eigenschaft.

Eine andere Alternative zum Auslösen von Ausnahmen besteht darin, den ursprünglichen value unverändert zurückzugeben und der Bindungsinstanz die Behandlung des Werts zu überlassen. In den meisten Fällen sind fehlgeschlagene Benutzeroberflächenbindungen keine Fehler. Sie verwenden den Quellwert nicht, sondern verwenden stattdessen DependencyProperty.UnsetValue, um nichts anzuzeigen, oder sie verwenden Fallbacks.

try/catch auf Grundlage einer Aktion, die auf value angewendet wird, ist ein häufiges Implementierungsschema für die Convert-Methode.

Beispiele

Das folgende Beispiel zeigt, wie die Convert-Methode mit Hilfe der Parameter parameter und language implementiert wird.


using System;
using System.Collections.ObjectModel;
using System.Globalization;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;

namespace ConverterParameterEx
{
    public partial class Page : UserControl
    {

        public ObservableCollection<Recording> MyMusic =
            new ObservableCollection<Recording>();
        public Page()
        {
            InitializeComponent();

            // Add items to the collection.
            MyMusic.Add(new Recording("Chris Sells", "Chris Sells Live",
                new DateTime(2008, 2, 5)));
            MyMusic.Add(new Recording("Luka Abrus",
                "The Road to Redmond", new DateTime(2007, 4, 3)));
            MyMusic.Add(new Recording("Jim Hance",
                "The Best of Jim Hance", new DateTime(2007, 2, 6)));

            // Set the data context for the combo box.
            MusicCombo.DataContext = MyMusic;
        }
    }

    // Simple business object.
    public class Recording
    {
        public Recording() { }
        public Recording(string artistName, string cdName, DateTime release)
        {
            Artist = artistName;
            Name = cdName;
            ReleaseDate = release;
        }
        public string Artist { get; set; }
        public string Name { get; set; }
        public DateTime ReleaseDate { get; set; }
    }

    public class DateFormatter : IValueConverter
    {
        // This converts the DateTime object to the string to display.
        public object Convert(object value, Type targetType, 
            object parameter, string language)
        {
            // Retrieve the format string and use it to format the value.
            string formatString = parameter as string;
            if (!string.IsNullOrEmpty(formatString))
            {
                return string.Format(
                    new CultureInfo(language), formatString, value);
            }
            // If the format string is null or empty, simply call ToString()
            // on the value.
            return value.ToString();
        }

        // No need to implement converting back on a one-way binding 
        public object ConvertBack(object value, Type targetType, 
            object parameter, string language)
        {
            throw new NotImplementedException();
        }
    }
}


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml.Data
Windows::UI::Xaml::Data [C++]

Metadaten

Windows.winmd

Siehe auch

IValueConverter
ConvertBack
Beispiel für XAML-Datenbindung
Übersicht über die Datenbindung

 

 

Anzeigen:
© 2017 Microsoft