way - wpf propertychanged




¿Cómo vincular múltiples valores a un solo WPF TextBlock? (3)

Actualmente estoy usando el TextBlock continuación para vincular el valor de una propiedad llamada Name :

<TextBlock Text="{Binding Name}" />

Ahora, quiero vincular otra propiedad llamada ID con el mismo TextBlock .

¿Es posible vincular dos o más valores al mismo TextBlock ? ¿Se puede hacer con una concatenación simple, como Name + ID y, de no ser así, de qué otra manera podría abordarse?


Puede usar un MultiBinding combinado con la propiedad StringFormat . El uso sería similar al siguiente:

<TextBlock>
    <TextBlock.Text>    
        <MultiBinding StringFormat="{}{0} + {1}">
            <Binding Path="Name" />
            <Binding Path="ID" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Dado un valor de Name of Foo y un valor para ID de 1 , la salida en TextBlock sería Foo + 1 .

Note: esto solo es compatible con .NET 3.5 SP1 y 3.0 SP2 o posterior.


Sé que esta es una forma tarde, pero pensé que agregaría otra forma de hacerlo.

Puede aprovechar el hecho de que la propiedad Text se puede configurar con " Run s", por lo que puede configurar enlaces múltiples usando una Ejecución para cada uno. Esto es útil si no tiene acceso a MultiBinding (que no encontré cuando desarrollé para Windows Phone)

<TextBlock>
  <Run Text="Name = "/>
  <Run Text="{Binding Name}"/>
  <Run Text=", Id ="/>
  <Run Text="{Binding Id}"/>
</TextBlock>

Use un ValueConverter

[ValueConversion(typeof(string), typeof(String))]
public class MyConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format("{0}:{1}", (string) value, (string) parameter);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {

        return DependencyProperty.UnsetValue;
    }
}

y en el marcado

<src:MyConverter x:Key="MyConverter"/>

. . .

<TextBlock Text="{Binding Name, Converter={StaticResource MyConverter Parameter=ID}}" />




multibinding