これは、WPFデータグリッドを使用するカスタム日付形式スレッドとは少し異なるしわです。
私のWin7ボックスには、コントロールパネルでdd-MM-yyとして定義されたカスタムの短い日付文字列があります。DataGridの日付列でその設定を表示に使用したいと思います。ビューモデルには、「日付」と呼ばれるDateTimeがあります。
私はこれを試しました:
<DataGrid AutoGenerateColumns="False" Name="dataCondition" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" ></DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Date, StringFormat=d}" />
<DataGridTextColumn Binding="{Binding Comment}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
日付列はm/d/yyyyとして表示されます。DataGridは、カスタムであるかどうかに関係なく、システムの短い日付設定を使用しませんか?
WPFDatePickersの動作は異なるようです。カスタムの短い日付形式は、StringFormatがなくても使用されます(ビューモデルでDateTimeに直接バインドされます)。
ゲッターがDateTime.ToShortDateStringを使用するビューモデル(Date-> DateFormatted)で文字列プロパティを作成することでDataGridでこの問題を回避できますが、これがこれを行うための最良の方法かどうかはわかりません。そして、私はまだバインディングTwoWayの部分を解決していません...:P