2008-11-17 124 views
2

我有一個組合框綁定到小數點的ObservableCollection。將貨幣換算器應用於物品的正確方法是什麼?組合框項目上的貨幣格式

編輯:

一)我有,我必須使用 b。將現有的貨幣轉換器).NET 3.0

我是否需要模板的項目?

回答

2

如果你有一些代碼做轉換的確是通過一個模板通過一個IValueConverter來運行每個項目,你最好打賭。

<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}" /> 

所以你剛纔定義CurrencyConverter類,使得它實現的IValueConverter並調用你的代碼把給定的量成格式化字符串。

0

使用的StringFormat在綁定表達式像

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

看到這個blog for more details.

一個ValueConverter是另一種方式 - 在.NET3.0的StringFormat不工作,它需要WPF3.5 SP1。

8

您可以使用組合框的ItemStringFormat屬性來告訴它如何它的每個項目的格式爲:

<ComboBox ItemStringFormat="c"> 

但是,要知道,當使用「C」作爲一種貨幣格式,它將使用貨幣由本地機器定義。如果您的數值是以$爲單位定義的,但您的客戶端電腦以英鎊或日元作爲貨幣符號運行,他們將不會看到您希望他們看到的內容。

+0

我們有一個特定的貨幣轉換器,我們需要使用它。不過謝謝。 – Donnelle 2008-11-17 03:45:51