2010-10-20 4 views
0

Comment lier à plusieurs propriétés dans WPF?
Je sais que vous pouvez utiliser le ItemStringFormat="{0} my hard coded string" pour décrire une valeur de chaîne, mais je suis intéressé par quelque chose comme ItemStringFormat="{0} ({1})" où l'élément zéro est une propriété et l'élément un est une propriété dans la classe liée.Liaison à plusieurs propriétés

public class ExchangeRate 
{ 
    public int ID { get; set; } 
    public string Code { get; set; } 
    public string Description { get; set; } 
    public decimal Rate { get; set; } 
} 

<ComboBox Margin="5,0" Name="Currency" ItemsSource="{Binding}" DisplayMemberPath="Description" SelectedValuePath="Code"/>

Cela me donnera une liste avec toutes les descriptions de devises, mais ce que je veux est quelque chose comme ça

"Dollar US (USD)"

où est "Dollar US" est le propriété Description et "USD" est le code de prorogation

Répondre

0

Vous pouvez utiliser un MultiBinding avec un IMultiValueConverter pour convertir à partir de plusieurs sources dans une seule propriété cible (par exemple: Texte).

0

Oui, vous avez raison et pour des raisons de documentation, je vais vous fournir cette solution en utilisant l'exemple ci-dessus.

<ComboBox Margin="5,0" Name="CurrentCurrency" ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding}">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="Description" />
<Binding Path="Code" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

Questions connexes