9

カスタムのDateTime文字列形式をバインディングで機能させることができません。形式を「mmmm、yyyy」にします(例:「2012年6月」)。

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

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

コンバーターの使用を検討しましたが、純粋なXAMLアプローチを好みます。

編集:

わかりやすくするために、タイプが。Windowの依存関係プロパティを持つを持っています。XAMLでは、ウィンドウに「Thiswindow」という名前を付けました。DateDateTime

編集2:

実際のコードを振り返ると、Labelではなく、がありましたTextBlock。TextBlockに変更しましたが、正常に動作します。

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

なぜそれが動作しないのか誰もが知っていLabelますか?

ありがとう。

4

2 に答える 2

12

ContentControls元のフォーマットを上書きするContentStringFormatプロパティがあります。

(私があなたの質問を見たとき、私はこれが実際に問題であると思っていましたがTextBlock、最初に見つけて驚いた)

于 2012-06-08T17:15:16.890 に答える
2

月は大文字にする必要があります。

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

編集:

ラベルの問題は、ラベルにテキストではなくコンテンツが含まれていることが原因である可能性があります。

Text = "{Binding...}"をContent="{Binding...}"に変更します

于 2012-06-08T17:02:20.283 に答える