다음을 통해 공유


방법: 바인딩된 항목 목록을 기반으로 값 산출

업데이트: 2007년 11월

MultiBinding을 사용하여 바인딩 대상을 속성을 소스 속성 목록에 바인딩한 다음 제공된 입력을 사용하여 값을 산출하는 논리를 적용할 수 있습니다. 이 예제에서는 MultiBinding을 사용하는 방법을 보여 줍니다.

예제

다음 예제에서 NameListData는 두 개의 속성, firstName과 lastName을 포함하는 개체인 PersonName 개체의 컬렉션을 참조합니다. 다음 예제에서는 개인의 성과 이름을 표시할 때 성을 먼저 표시하는 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 메서드의 매개 변수 인수에 의해 참조됩니다. 이 메서드는 매개 변수로 전환하여 이름의 서식을 지정하는 방식을 결정합니다.

전체 샘플을 보려면 매개 변수가 있는 다중 바인딩 구현 샘플을 참조하십시오.

IMultiValueConverter 구현에 대한 다른 예제를 보려면 데이터 바인딩 데모를 참조하십시오.

참고 항목

작업

방법: 바인딩된 데이터 변환

개념

데이터 바인딩 개요

기타 리소스

데이터 바인딩 샘플

데이터 바인딩 방법 항목