Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
La classe MultiBinding consente di associare una proprietà di destinazione dell'associazione a un elenco di proprietà di origine e di applicare quindi una logica per produrre un valore con gli input specificati. In questo esempio viene mostrato come utilizzare la classe MultiBinding.
Esempio
Nell'esempio riportato di seguito, l'elemento NameListData fa riferimento a un insieme di oggetti PersonName, che contengono due proprietà, firstName e lastName. Nell'esempio seguente viene generato un oggetto TextBlock in cui sono mostrati, nell'ordine, il cognome e il nome di una persona.
<Window
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://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>
Per comprendere il modo in cui viene generato il formato cognome-nome, è necessario esaminare l'implementazione di NameConverter:
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
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;
}
}
NameConverter implementa l'interfaccia IMultiValueConverter e accetta i valori delle singole associazioni, archiviandoli nella matrice di oggetti valori. L'ordine in cui gli elementi Binding vengono visualizzati nell'elemento MultiBinding corrisponde all'ordine in cui tali valori sono archiviati nella matrice. Per fare riferimento al valore dell'attributo ConverterParameter si utilizza l'argomento di parametro del metodo Converter, che esegue una modifica del parametro per determinare la modalità di formattazione del nome.
Per l'esempio completo, vedere Esempio di implementazione di MultiBinding con parametri.
Per un ulteriore esempio di implementazione IMultiValueConverter, vedere Demo Data Binding.
Vedere anche
Attività
Procedura: convertire i dati associati
Concetti
Cenni preliminari sull'associazione dati