web-dev-qa-db-fra.com

Pouvons-nous concaténer deux propriétés dans la liaison de données?

Pouvons-nous concaténer deux propriétés ensemble dans l'expression de liaison? Si possible sans convertisseur ou sans écrire deux blocs de texte et les définir individuellement?

37
TCM

Comme le suggère la souris alpha, MultiBinding ne fonctionnera pas hors de la boîte, mais ce gars a jeté quelque chose ensemble qui pourrait aider:

http://www.olsonsoft.com/blogs/stefanolson/post/Improvements-to-Silverlight-Multi-binding-support.aspx

Si cela semble un peu voyou, alors peut-être essayez de mettre une propriété de valeur combinée sur votre objet comme aide pour le mécanisme de liaison, comme:

public string FullName {
   get { return this.FirstName + " " + this.LastName; }
}
13
Tom

Si vous voulez montrer, dites FirstName et LastName, dans un seul TextBlock, alors vous pouvez faire comme ceci:

<TextBlock>
     <Run Text="{Binding FirstName}" />
     <Run Text="   " /> <!-- space -->
     <Run Text="{Binding LastName}" />
</TextBlock>

Maintenant, la propriété Text de TextBlock sera "Sachin Tendulkar" et sera affiché si:

FirstName = Sachin
LastName  = Tendulkar

J'espère que cela pourra aider.

85
Nawaz
<TextBlock.Text>
   <MultiBinding StringFormat="{}{0} , {1}">
     <Binding Path="data1" />
     <Binding Path="data2" />
    </MultiBinding>
</TextBlock.Text>

data1 et data2 sont des propriétés de chaîne qui sont liées.

14
Kiran k g

C'est possible dans WPF à l'aide de MultiBinding et StringFormat. Mais pas dans Silverlight malheureusement.

6
alpha-mouse

Si vous devez ajouter une chaîne, essayez-la. Ici, j'ajoute "%" après avoir lié le texte dans Windows Phone.

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
4
reza.cse08

Vous pouvez ajouter une nouvelle propriété avec un getter qui effectue la concaténation.

Supposons que vous ayez les propriétés FirstName et LastName. Vous pouvez ensuite définir une propriété Name comme suit:

public string Name { get { return FirstName + " " + LastName; } }

Cela fonctionnera bien, mais vous devez savoir que vous ne pouvez pas effectuer de liaison bidirectionnelle pour une propriété en lecture seule. Vous pouvez également implémenter une notification de modification de propriété pour la propriété concaténée dans les setters des propriétés source.

3
Rune Grimstad