2012-06-08 19 views
8

私のカスタムDateTime文字列形式を自分のバインディングで動作させることができません。形式を「mmmm、yyyy」(たとえば「June、2012」)にします。WPFのカスタムDateTime文字列形式

以下は動作しません。短い日付形式(m/d/yyyy)を取得します。

<TextBlock Text="{Binding ElementName=ThisWindow, 
          Path=Date, 
          StringFormat={}{0:MMMM\, yyyy}"/> 

私はコンバータを使用することを考えましたが、私は純粋なXAMLアプローチを推奨します。

編集:明確にするために

、私はタイプDateTimeの依存関係プロパティDateWindowを持っています。私のXAMLでは、「Thiswindow」というウィンドウに名前を付けました。

編集2:

私は私の実際のコードに戻って見て、私はLabel、ないTextBlockを持っていました。私はTextBlockに変更し、正常に動作します。

<Label Content="{Binding ElementName=ThisWindow, 
       Path=Date, 
       StringFormat={}{0:MMMM\, yyyy}"/> 

誰もが、Labelで動作しない理由を知っていますか?

ありがとうございました。

+0

これは(私のために働いたことがあるべき除き、 '{0:MMMM \、YYYY}' )。あなたの "日付"プロパティについての何か? 'DateTime'ではなく' string'を偶然返すのでしょうか? – CodingGorilla

+0

状況をより明確にするために編集します... – gregsdennis

答えて

11

ContentControlsは、元の書式をオーバーライドContentStringFormat propertyを有します。

は(私はあなたの質問を見たとき、私は実際に問題になるこの予想が、最初はTextBlock見つけて驚いた)

+0

私はそのプロパティについて知りませんでした。素晴らしいありがとう。 – gregsdennis

2

あなたの月は大文字にする必要が:

{Binding Source={x:Static sys:DateTime.Now}, StringFormat={}{0:MMMM\, yyyy}} 

EDIT:

ラベルの問題は、おそらくされたラベルがコンテンツを持っているので、テキストではありません。

変更テキスト= "{バインディング...}" のコンテンツへ= "{...}バインディング"

+0

'Label'だったときに' Content'プロパティとして持っていて、うまくいきませんでした。 – gregsdennis

関連する問題