مشاركة عبر


كيفية القيام بما يلي: إصدار قيمة تعتمد على قائمة العناصر منضمة

MultiBinding يسمح لك بربط ربط الهدف الخاصية إلى قائمة مصدر خصائص ثم قم بتطبيق المنطق لتنتج قيمة من الإدخالات المحددة. يوضح هذا المثال كيفية استخدام MultiBinding.

مثال

في المثال التالي NameListData يشير إلى مجموعة من PersonName الكائنات التي تعتبر كائنات تحتوي على خاصيتين ، firstName و lastName. ينتج المثال التالي TextBlock الذي يعرض الأسماء الأولى والأخيرة لشخص بالاسم الأخير أولاً.

<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>

لفهم كيف يتم إنشاء التنسيق الأول- الإسم الأخير, لنتعرف على تطبيق 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يطبقIMultiValueConverterواجهة. NameConverterيأخذ القيم من الروابط الفردية و يخزنها في صفيفة قيم كائن. ترتيب Binding تظهر العناصر ضمن MultiBinding العنصر هو الترتيب الذي يتم تخزين هذه القيم بها في الصفيف. قيمة ConverterParameter السمة ‏‫مشار إليها بواسطة وسيطة المعلمة من Converter أسلوب, الذي ينفذ تبديل على المعلمة لتحديد كيفية تنسيق الاسم.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحويل بيانات مرتبطة

المبادئ

نظرة عامة لربط البيانات

موارد أخرى

المواضيع الإجرائية لربط البيانات