IValueConverter Interface

Macht Methoden verfügbar, sodass die Daten geändert werden können, während sie das Bindungsmodul durchlaufen.

Syntax


public interface IValueConverter

Attribute

[Version(0x06020000)]
[WebHostHidden()]

Member

IValueConverterSchnittstelle hat diese Membertypen:

Methoden

The IValueConverter Schnittstelle hat diese Methoden. Es erbt auch Methoden von Object Klasse.

MethodeBeschreibung
Convert Modifies the source data before passing it to the target for display in the UI.
ConvertBack Modifies the target data before passing it to the source object. This method is called only in TwoWay bindings.

 

Hinweise

Sie können eine Klasse erstellen, mit der Sie das Format Ihrer Daten zwischen Quelle und Ziel durch Übernahme von IValueConverter konvertieren können. Zum Beispiel wünschten Sie möglicherweise eine Liste der Farben, die Sie als RGBA-Werte speichern, aber auf der Benutzeroberfläche mit Farbnamen anzeigen. Indem Sie Convert und ConvertBack implementieren, können Sie das Format der Datenwerte ändern, wenn diese durch das Bindungsmodul zwischen Ziel und Quelle hin- und hergeleitet werden.

Sie sollten Convert immer mit einer funktionalen Implementierung implementieren, es ist jedoch üblich, ConvertBack zu implementieren, damit eine nicht implementierte Ausnahme gemeldet wird. Sie benötigen nur eine ConvertBack-Methode im Konverter, wenn Sie den Konverter für bidirektionale Bindungen oder XAML für die Serialisierung verwenden.

Hinweis  Um eine Datenbindung an einen benutzerdefinierten, in Visual C++-Teilerweiterungen (C++/CX) geschriebenen Wertkonverter auszuführen, muss die Headerdatei, in der die IValueConverter-Implementierungsklasse definiert ist, direkt oder indirekt in eine Code-Behind-Datei eingefügt werden. Weitere Informationen finden Sie unter Erstellen Ihrer ersten App im Metro-Stil mit C++.

Tipp  Einige der Standardprojektvorlagen für ein Windows Store-App enthalten eine Hilfsklasse, BooleanToVisibilityConverter. Diese Klasse stellt eine IValueConverter-Implementierung dar, die ein allgemeines benutzerdefiniertes Steuerelementszenario behandelt, bei dem Sie boolesche Werte aus der Steuerelementlogikklasse verwenden, um den Visibility-Wert in XAML-Steuerelementvorlagen festzulegen.

Migrationshinweise

In der Windows-Runtime verwenden Sprachparameter für die IValueConverter-Methoden Zeichenfolgen anstelle von CultureInfo-Objekten wie in den Windows Presentation Foundation (WPF)- und Microsoft Silverlight-Definitionen der Schnittstelle.

Beispiele

Das folgende Beispiel zeigt, wie die IValueConverter-Schnittstelle implementiert wird und wie der Konverter zum Binden von Daten an eine Auflistung von Objekten verwendet wird.

Wichtig  Wenn Sie in C++/CX codieren, entfernen Sie das ConverterParameter-Attribut aus dem letzten TextBlock, da dieser bestimmte Zeichenfolgenwert spezifisch für die Microsoft. NET-Zeichenfolgenformatierung ist. Das gesamte Element sollte wie folgt aussehen: <TextBlock Text="{Binding Path=ReleaseDate, Mode=OneWay, Converter={StaticResource FormatConverter}}" />.


<UserControl x:Class="ConverterParameterEx.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:ConverterParameterEx" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" >
        <Grid.Resources>
           <local:DateFormatter x:Key="FormatConverter" />
        </Grid.Resources>
        
        <ComboBox Height="60" Width="250" x:Name="MusicCombo" 
            ItemsSource="{Binding}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock FontWeight="Bold" Text="{Binding Path=Name, Mode=OneWay}" />
                        <TextBlock Text="{Binding Path=Artist, Mode=OneWay}" />
                        <TextBlock Text="{Binding Path=ReleaseDate, Mode=OneWay,
                            Converter={StaticResource FormatConverter}, 
                            ConverterParameter=\{0:d\}}" />
                   </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</UserControl>



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

Binding
Beispiel für XAML-Datenbindung
Übersicht über die Datenbindung

 

 

Anzeigen:
© 2014 Microsoft