Nasıl yapılır: Bağımlı Öğeler Listesine Göre Değer Üretme
MultiBinding bir bağlama hedef özelliğini kaynak özellikler listesine bağlamanıza ve ardından verilen girişlerle bir değer üretmek için mantık uygulamanıza olanak tanır. Bu örnekte nasıl kullanılacağı MultiBindinggösterilmektedir.
Örnek
Aşağıdaki örnekte, NameListData
ve olmak üzere iki özellik firstName
lastName
içeren nesneler olan bir nesne koleksiyonuna PersonName
başvurur. Aşağıdaki örnek, soyadı adlarıyla bir kişinin adını ve soyadını gösteren bir oluşturur TextBlock .
<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>
Soyadı-adı biçiminin nasıl üretildiğini anlamak için uygulamasını inceleyelim 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
arabirimini IMultiValueConverter uygular. NameConverter
tek tek bağlamalardaki değerleri alır ve bunları values nesne dizisinde depolar. Öğelerin öğesinin Binding altında MultiBinding görünme sırası, bu değerlerin dizide depolandığı sıradır. özniteliğinin ConverterParameter değerine, adın nasıl biçimlendirileceğini belirlemek için parametresinde bir anahtar gerçekleştiren yönteminin parametre bağımsız değişkeni Converter tarafından başvurulur.
Ayrıca bkz.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin