69

変更したいのは、日付列の形式を「DD/MM/YYYY HH:MM:SS」から「DD.MM.YYYY」に変更することです。

  <DataGrid Name="dgBuchung" AutoGenerateColumns="True" 
            ItemsSource="{Binding}" Grid.ColumnSpan="3" >
  <ab:DataGridTextColumn Header="Fecha Entrada" Width="110"  
       Binding="{Binding date, StringFormat={}{0:dd/MM/yyyy}}" IsReadOnly="True" />
                        
</DataGrid>
                                      

残念ながら、そのコードはXMLParseException.

まず、AutoGenerateColumns を使用しているときにこの方法で解決できますか? いいえの場合、他にどのように対処できますか?

はいの場合、上記のコードの問題は何ですか?

4

7 に答える 7

131

DataGrid.Columns を使用することを忘れないでください。すべての列がそのコレクション内にある必要があります。私のプロジェクトでは、日付を少し異なる形式にしています。

<tk:DataGrid>
    <tk:DataGrid.Columns>
        <tk:DataGridTextColumn Binding="{Binding StartDate, StringFormat=\{0:dd.MM.yy HH:mm:ss\}}" />
    </tk:DataGrid.Columns>
</tk:DataGrid>

AutoGenerateColumns を使用すると、DataGird が独自の列を追加するため、フォーマットを制御できなくなります。

于 2011-11-02T10:03:18.420 に答える
109

ここでのパーティーには非常に遅れていますが、他の誰かがこのページに出くわした場合に備えて...

XAML で AutoGeneratingColumn ハンドラーを設定することでそれを行うことができます。

<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn"  ..etc.. />

そして、コード ビハインドで次のようにします。

private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyType == typeof(System.DateTime))
        (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
}
于 2013-05-14T23:20:13.083 に答える
18

バインドされたプロパティが DateTime の場合、必要なのは

Binding={Property, StringFormat=d}
于 2013-04-03T20:33:01.613 に答える
5
Binding="{Binding YourColumn ,StringFormat='yyyy-MM-dd'}"
于 2018-07-26T20:41:13.753 に答える