Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IMultiValueConverter (Interfaz)

proporciona una manera de aplicar lógica personalizada en MultiBinding.

Espacio de nombres:  System.Windows.Data
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

public interface IMultiValueConverter

El tipo IMultiValueConverter expone los siguientes miembros.

  NombreDescripción
Método públicoConvertConvierte valores de origen a un valor para destino de enlace. El motor de enlace de datos llama a este método cuando se propaga los valores de enlaces de origen a destino de enlace.
Método públicoConvertBackConvierte un valor de destino de enlace los valores obligatorios de origen.
Arriba

Para asociar un convertidor con MultiBinding, cree una clase que implemente la interfaz de IMultiValueConverter , y después implementar el Convert y los métodos de ConvertBack .

Los enlaces individuales en la colección pueden tener sus propios convertidores de valores. Para obtener más información, vea IValueConverter.

MultiBinding permite enlazar una propiedad del destino de enlace a una lista de propiedades de origen y, a continuación, aplicar la lógica para generar un valor con las entradas indicadas. En este ejemplo de complemento se muestra cómo utilizar MultiBinding.

En el ejemplo siguiente, NameListData hace referencia a una colección de objetos PersonName, que son objetos que contienen dos propiedades, firstName y lastName. En el ejemplo siguiente se genera un objeto TextBlock que muestra el nombre y el apellido de una persona, con el apellido en primer lugar.


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


Para entender cómo se genera el formato que muestra primero el apellido, estudiaremos la implementación de 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;
    }
}


NameConverter implementa la interfaz IMultiValueConverter. NameConverter toma los valores de los enlaces individuales y los almacena en la matriz de objetos de valores. El orden en el que los elementos Binding aparecen bajo el elemento MultiBinding es el orden en el que esos valores están almacenados en la matriz. El argumento de parámetro del método de Converter, que aplica una modificación al parámetro para determinar cómo dar formato al nombre, hace referencia al valor del atributo ConverterParameter.

.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft