Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
MultiBinding ermöglicht es Ihnen, eine Bindungszieleigenschaft an eine Liste der Quelleigenschaften zu binden und dann Logik anzuwenden, um einen Wert mit den angegebenen Eingaben zu erzeugen. In diesem Beispiel wird die Verwendung MultiBindingveranschaulicht.
Beispiel
Im folgenden Beispiel NameListData bezieht sich auf eine Auflistung von PersonName Objekten, bei denen es sich um Objekte handelt, die zwei Eigenschaften enthalten, firstName und lastName. Im folgenden Beispiel wird ein TextBlock Objekt erstellt, das die Vor- und Nachnamen einer Person mit dem Nachnamen zuerst anzeigt.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:SDKSample"
x:Class="SDKSample.Window1"
Width="400"
Height="280"
Title="MultiBinding Sample">
<Window.Resources>
<c:NameList x:Key="NameListData"/>
<c:NameConverter x:Key="myNameConverter"/>
</Window.Resources>
<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myNameConverter}"
ConverterParameter="FormatLastFirst">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Window>
Um zu verstehen, wie das Nachname-vor-Vornamen-Format erstellt wird, werfen wir einen Blick auf die Implementierung der NameConverter.
public class NameConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string name;
switch ((string)parameter)
{
case "FormatLastFirst":
name = values[1] + ", " + values[0];
break;
case "FormatNormal":
default:
name = values[0] + " " + values[1];
break;
}
return name;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
string[] splitValues = ((string)value).Split(' ');
return splitValues;
}
}
Public Class NameConverter
Implements IMultiValueConverter
Public Function Convert1(ByVal values() As Object, _
ByVal targetType As System.Type, _
ByVal parameter As Object, _
ByVal culture As System.Globalization.CultureInfo) As Object _
Implements System.Windows.Data.IMultiValueConverter.Convert
Select Case CStr(parameter)
Case "FormatLastFirst"
Return (values(1) & ", " & values(0))
End Select
Return (values(0) & " " & values(1))
End Function
Public Function ConvertBack1(ByVal value As Object, _
ByVal targetTypes() As System.Type, _
ByVal parameter As Object, _
ByVal culture As System.Globalization.CultureInfo) As Object() _
Implements System.Windows.Data.IMultiValueConverter.ConvertBack
Return CStr(value).Split(New Char() {" "c})
End Function
End Class
NameConverter implementiert die IMultiValueConverter Schnittstelle.
NameConverter verwendet die Werte aus den einzelnen Bindungen und speichert sie im Werteobjektarray. Die Reihenfolge, in der die Binding Elemente unter dem MultiBinding Element angezeigt werden, ist die Reihenfolge, in der diese Werte im Array gespeichert werden. Auf den Wert des ConverterParameter-Attributs wird durch das Parameterargument der Converter-Methode verwiesen, die eine Switch-Anweisung auf den Parameter ausführt, um zu bestimmen, wie der Name formatiert wird.
Siehe auch
.NET Desktop feedback