Frage

Ich habe eine ComboBox an eine ObservableCollection der Dezimalstellen gebunden. Was ist der richtige Weg, um unsere Währungsrechner auf die Elemente anwenden?

Edit:

a) Ich habe einen bestehenden Währungsumrechner, die ich muss verwenden b) .NET 3.0

Habe ich die Elemente in der Vorlage müssen?

War es hilfreich?

Lösung

Ihre beste Wahl, wenn Sie einen Code haben, um die Konvertierung zu tun, ist in der Tat jedes Element durch eine IValueConverter über eine Vorlage zu laufen.

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

So einfach Ihre Currency Klasse definieren, so dass sie implementiert IValueConverter und rufen den Code auf den angegebenen Wert in einen formatierten String zu machen.

Andere Tipps

Sie können die ItemStringFormat Eigenschaft auf ComboBox verwenden Sie es zu sagen, wie jedes seiner Elemente zu formatieren:

<ComboBox ItemStringFormat="c">

Beachten Sie jedoch, dass, wenn „c“ als Währung Formatierer, wird die Währung von der lokalen Maschine definiert verwenden. Wenn Sie Ihre Werte in $ definiert sind, aber Ihr Client-PC mit Pfund oder Yen als Währung Symbol ausgeführt wird, werden sie nicht sehen werden, was Sie wollen, sie zu sehen.

Mit String in dem Binding-Ausdruck wie

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

Sehen Sie diese Blog für weitere Details.

Valueconverter ist eine andere Art und Weise - String funktioniert nicht auf .NET3.0 es braucht WPF3.5 SP1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top