2008-11-17 13 views
2

J'ai une zone de liste déroulante liée à une collection Observable de nombres décimaux. Quelle est la bonne façon d'appliquer notre convertisseur de devises aux articles?Mise en forme de devise sur les éléments ComboBox

Edit:

a) J'ai un convertisseur de devises existant que je dois utiliser b) .NET 3.0

Ai-je besoin des éléments modèle?

Répondre

2

Votre meilleur pari si vous avez du code pour faire la conversion est en effet d'exécuter chaque élément via un IValueConverter via un template.

<Window.Resources> 
    <my:CurrencyConverter x:Key="currencyConverter" /> 

    <DataTemplate x:Key="thingTemplate" DataType="{x:Type my:Thing}"> 
     <TextBlock 
      Text="{Binding Amount,Converter={StaticResource currencyConverter}}" /> 
    </DataTemplate> 
</Window.Resources> 

<ComboBox 
    ItemSource="... some list of Thing instances ..." 
    ItemTemplate="{StaticResource thingTemplate}" /> 

Vous définissez juste votre classe ConvertisseurDevises telle qu'elle met en œuvre IValueConverter et appelle votre code pour transformer la quantité donnée dans une chaîne formatée.

0

Utilisez StringFormat dans l'expression de liaison comme

<TextBox Text="{Binding Path=Value, StringFormat=Amount: {0:C}}"/> 

Voir cette blog for more details.

Un ValueConverter est une autre façon - StringFormat ne marche pas sur le travail .NET3.0 dont il a besoin WPF3.5 SP1.

8

Vous pouvez utiliser la propriété ItemStringFormat sur ComboBox pour lui dire comment formater chacun de ses éléments:

<ComboBox ItemStringFormat="c"> 

Cependant, il faut savoir que lors de l'utilisation « c » comme formatter de monnaie, il utilisera la monnaie défini par la machine locale. Si vos valeurs sont définies dans $ mais que votre ordinateur client fonctionne avec des livres ou des yens comme symbole de devise, il ne verra pas ce que vous voulez qu'il voit.

+0

Nous avons un convertisseur de devises spécifique que nous utilisons et j'ai besoin d'utiliser celui-là. Merci quand même. – Donnelle

+0

Ouais, si vous avez du code, vous devez appeler alors une implémentation IValueConverter est le meilleur moyen. –

+0

Mais est-ce que je fais cela à travers un modèle d'élément, et quelle est la bonne façon de définir la valeur sélectionnée? – Donnelle