Binding の StringFormat で金額表示
Silverlight 4 から Binding に文字列のフォーマットを指定できる StringFormat が追加されました。
例えば、金額を表示するなら以下のような感じで書式指定の c を設定します。ここではスライダーで値を変更できるようにしています。
<StackPanel Orientation="Vertical"> <Slider Orientation="Horizontal" Minimum="100" Maximum="10000" Name="ValueSlider" /> <TextBlock FontSize="50" Text="{Binding Value,ElementName=ValueSlider, StringFormat='c'}" /> </StackPanel>
で、これを表示すると・・・・
まぁ、確かに金額書式なんですが・・・・。なぜに $ ・・・・。
どうもデフォルトは英語みたいです。で、言語を指定することにします。参考は以下。
http://msdn.microsoft.com/ja-jp/library/cc838238%28v=VS.95%29.aspx
日本語に指定するのは FrameworkElement.Language に指定するだけです。
<StackPanel Orientation="Vertical"> <Slider Orientation="Horizontal" Minimum="100" Maximum="10000" Name="ValueSlider" /> <TextBlock FontSize="50" Text="{Binding Value,ElementName=ValueSlider, StringFormat='c'}" Language="ja" /> </StackPanel>
が、毎度毎度全部のタグに書いてるのはめんどくさいです。ってことで、親要素に指定してみると、
<StackPanel Orientation="Vertical" Language="ja"> <Slider Orientation="Horizontal" Minimum="100" Maximum="10000" Name="ValueSlider" /> <TextBlock FontSize="50" Text="{Binding Value,ElementName=ValueSlider, StringFormat='c'}" /> </StackPanel>
ちゃんと継承されましたね。ってことで、一番親要素に指定しておけば楽チンそうです。
ちなみにコードで指定するには以下で。
valueTextBlock.Language = XmlLanguage.GetLanguage("ja");