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?
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:
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; }
}
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.
<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.
C'est possible dans WPF à l'aide de MultiBinding et StringFormat. Mais pas dans Silverlight malheureusement.
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\}%}"/>
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.