2017-08-02 38 views
0

0.1500を15.00として表示しようとしています。私のC#プロパティは小数で、私のxamlコードは<TextBox Text="{Binding ClosingRate, StringFormat={}{0:P2}}"/>です。小数点を2桁右に移動したい場合は、小数点の値を変更したり先頭に0を付けたりしないでください。 "P2" 20.00%、私はパーセント記号が欲しくない。WPF Xaml StringFormatは%の小数点以下桁数を移動しますが、%はありません。

+0

コンバーターを使用できます – Ben

答えて

2

単純なStringFormatではできません。それはあなたにといくつかの事前定義されたオプションを提供し、興味深いコーナーケースではほとんど拡張性がありません。あなたがしたいことは事実上*=100あなたの価値であり、その種類は算術演算であるのでバインディングとフォーマットのどちらでも直接サポートされません。

実際にP /%も* = 100となっているという事実は、たぶん偶然の一致です。あなたは%を飛ばすためにそれをハックすることができますが、それはあなたが別の桁数でそれを "移動"する必要がある別の場所を持っている場合、3日間であなたを助けません。

解決策は、表示された値に100を掛けることです。ソース値を変更する必要はありません。UIにソース値とは異なる値を読み取らせるだけです。

二つの最も簡単な方法がある

:ちょうど約通知について覚え読み取り専用になり、それがClosingRate * 100(返されます

  • あなたはどちらかのViewModelで、単にClosingRateFormattedすなわち新しいプロパティを暴露することによってそれを行うことができますの両方に変更するプロパティ)
  • IValueConverterを使用して通常どおりClosingRateにバインドすることができます。 ConverterにはConvertとConvertBackという2つのメソッドがあり、1つは* = 100、もう1つは(必要な場合は)/ 100にすることができます。これはUIに渡される値を変更しますが、通知。

変更通知(最初のオプションとは異なります)では変更は必要ありませんが、コンバーターを使用することは新しい読み込みプロパティを作成するよりもはるかに困難です。

関連する問題