2010-09-16 8 views
5

In XAML ist es einfach genug, StringFormat='$#,0;$-#,0;Nil'10 zu verwenden, um eine gebundene Ganzzahlvariable als schön formatierten Dollarbetrag darzustellen. z.B. würde 1024 als "1.024" herauskommen.Gibt es eine Möglichkeit, XAML/C# StringFormat ganze Dollar für größere Beträge, aber Cent für kleinere Beträge anzeigen zu lassen?

Ich muss mit Zahlen von ein paar Cent bis zu ein paar hundert Dollar umgehen - so 0.45 sollte als $ 0,45 angezeigt werden, aber alles größer als ein Schwellenwert (1? 9,99?) Sollte als Ganzes angezeigt werden Dollar-Betrag. Z.B. 12.73 sollte als '$ 13' angezeigt werden.

Bevor ich weitermachen und etwas mäßig chaotischen und spezifischen Code rollen, hat jemand eine nette clevere Möglichkeit, dies zu tun? Im Idealfall wäre es alles im StringFormat :)

Antwort

7

Ich kann nicht sehen, wie all diese Logik in das StringFormat geschrieben werden kann.

Ich denke, der sauberste Weg ist eine IValueConverter Implementierung. Sie können einen Konverterparameter verwenden, um den Schwellenwert festzulegen, sodass der Konverter wiederverwendet werden kann und keinen fest codierten Wert aufweist.

Wenn Sie keine bidirektionale Bindung verwenden und MVVM implementieren, ist es wahrscheinlich vorzuziehen, eine Zeichenfolgenvariable im Ansichtsmodell zu verwenden, die den Anzeigewert basierend auf dem Ganzzahlwert zurückgibt.

+0

Danke, Sie haben vielleicht Recht und ich denke an die String-Version. Meine Bindung ist einseitig, aber ich lasse die Frage eine Weile laufen. – whybird

1

Haben Sie keine Angst, einen Wertkonverter für dieses spezifische Szenario zu erstellen.

Wenn ein Unternehmen Bedarf für diese Art der Formatierung ist, dann wird es sehr wahrscheinlich später ohnehin wieder verwendet werden und macht es ein Value Converter macht es einfacher, und Test erneut verwenden.

Jay's Vorschlag ist wahrscheinlich so sauber wie es geht, da Ihre Anforderung Logik für den Formatierungsschwellenwert verwenden muss.

Verwandte Themen