2011-08-03 6 views
0

シナリオWPFバインディングの書式設定に組み込まれているものはありますか?

私はIFormatProviderを使用してWPFのバインディングをフォーマットする方法を見つけるように見えることはできません。現在、私は私のデータソースのプロパティをしました:

public int PersonNumber { get; set; } 

このプロパティはXAMLでラベルにバインドされています

<Label Content="{Binding Path=PersonNumber}" /> 

あなたはそれが数だが、0000.00のようにフォーマットする必要があります見ることができるように。 000。現在、私たちは古いWinFormsアプリケーションでこのようなもののために別のIFormatProviderを使用しています。

質問

  • は、WPFでこれを可能ように書式設定されていますか?
    • もしそうなら、IFormatProviderを使用することをお勧めします。
    • いいえ、いい選択肢は何ですか?事前に

ありがとう!

答えて

4

<Label Content="{Binding PersonNumber}" ContentStringFormat="000" /> 

私はWPFのフォーマットはしかし、するIFormatProviderを利用することができるかどうかわかりません。

1

あなたはStringFormat

Bindingのニース例プロパティを使用することができます:あなたはラベルを含むすべてのContentControlに子孫である ContentStringFormatプロパティ、探している http://blogs.msdn.com/b/mikehillberg/archive/2008/05/29/trying-out-binding-stringformat.aspx

+0

を? –

+1

'Binding.StringFormat'は' Label.Content'では動作しません。これは 'TextBlock.Text'のような文字列プロパティでのみ機能します。 –

+0

@Monty:申し訳ありませんが、わかりません。 –

1

投稿された回答に加えて、常にコンバータの方法があります。

+0

それは本当です。このような簡単な操作のための大きな迂回路として見えた。 –

+0

ああ、まあ。コンバータは最も一般的な方法です。ほとんどすべての状況を解決します。しかし、コンバータがちょうど "大きな迂回路"であるいくつかの単純化があります。 –

3

そして完全であることを、あなただけのC#で完全な制御を得るためにあなたのViewModelにStringプロパティを追加することができます。IFormatProvidersでも

public int PersonNumber { get; set; } 
public string PersonNumberText { get { return ... } } 
+0

viewmodels rules;) – blindmeis

+0

私の場合は、ViewModelのObservableCollectionにラップされたDomainModelオブジェクトです。あなたのポイントを理解して、ViewModelに追加のプロパティを作成しますが、DomainModelでこれを行うことはできません。 –

関連する問題