Cara: Menghasilkan Nilai Berdasarkan Daftar Item Terikat
MultiBinding memungkinkan Anda untuk mengikat properti target pengikatan ke daftar properti sumber lalu menerapkan logika untuk menghasilkan nilai dengan input yang diberikan. Contoh ini menunjukkan cara menggunakan MultiBinding.
Contoh
Dalam contoh berikut, NameListData
mengacu pada kumpulan PersonName
objek, yang merupakan objek yang berisi dua properti, firstName
dan lastName
. Contoh berikut menghasilkan TextBlock yang menunjukkan nama depan dan belakang seseorang dengan nama belakang terlebih dahulu.
<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>
Untuk memahami bagaimana format nama belakang-pertama diproduksi, mari kita lihat implementasi NameConverter
dari :
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
mengimplementasikan antarmuka IMultiValueConverter. NameConverter
mengambil nilai dari pengikatan individual dan menyimpannya dalam array objek nilai. Urutan di mana Binding elemen muncul di bawah MultiBinding elemen adalah urutan di mana nilai-nilai tersebut disimpan dalam array. Nilai atribut dirujuk ConverterParameter oleh argumen Converter parameter metode , yang melakukan sakelar pada parameter untuk menentukan cara memformat nama.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk