WPF datagrid-Spalte Datum mit system custom kurzes Datum-format
Dies ist etwas anders Falten, um das benutzerdefinierte Datumsformat threads mit WPF-datagrids.
Meine Win7-Kiste hat eine benutzerdefinierte kurze Datums-string definiert in der Systemsteuerung als dd-MM-yy. Ich möchte eine date-Spalte in einem DataGrid zu verwenden, die Einstellung für die Anzeige. Ein view-Modell hat ein DateTime namens 'Datum'.
Habe ich versucht, dieses:
<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>
Die Spalte Datum zeigt sich als m/d/yyyy. Nicht das DataGrid verwenden Sie die system Einstellung kurzes Datum, unabhängig davon ob es custom oder nicht?
WPF DatePickers zu funktionieren scheint anders. Die benutzerdefinierte kurze Datum-format verwendet wird, auch ohne ein StringFormat (und gebunden wird, direkt an ein DateTime in ein view-Modell).
Kann ich dieses problem umgehen, in dem DataGrid durch die Schaffung eines string-Eigenschaft im view-Modell (Datum,- > DateFormatted), wo die get-Methode verwendet die DateTime.ToShortDateString, aber ich bin mir nicht sicher, dies ist der beste Weg, dies zu tun. Und ich habe noch nicht herausgefunden, die TwoWay-Bindung Teil noch nicht... 😛
InformationsquelleAutor cardinalPilot | 2013-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie einen Konverter aus, und verwenden Sie es in der Bindung an die datetime-Spalte. Eine Klasse, die erbt IValueConverter. Erhält ein DateTime und gibt einen String zurück.
Im sorry, aber ich Stimme mit @Maverik.
Fühlen Sie sich frei ändern Sie die Antwort. Ich stellte nur die Logik, wie es zu lösen mit a-Wandler. Konverter sind einfach zu Lesen und zu lernen. So habe ich Zeit gespart durch weglassen von code. Ich habe akzeptiert, weil ich beantwortet, bevor Sie die andere Antwort. Kein problem für mich, wenn es geändert wird. Aber meine Antwort ist nicht falsch, also ich glaube nicht, ich Verdiene das down-votes.
Gut, ich kann nicht einverstanden mit diesem wird ausgewählt, wie die Antwort (ich habe nie gesagt, seine die falsche Antwort, aber es gibt eine bessere Antwort), aber ich war nicht derjenige, der nach unten gestimmt. Ich denke, es gibt andere, die mir Zustimmen.
Die Frage Besitzer ich frei, ändern Sie die akzeptierte Lösung. Kein problem für mich.
InformationsquelleAutor Mats Magnem
Versuchen Einstellung/Bindung dieses
Converter
:Dann richten Sie Ihre XAML-Code wie dieser:
funktioniert das Bearbeiten, Ihnen zu helfen?
Beachten Sie, dass Sie benötigen, um Unterstützung für null-Werte (je nach Fall).
InformationsquelleAutor Kcvin
Ich glaube, die Lösung ist ziemlich einfach. Die
StringFormat
Sie verwenden, ist ungültig, so wird es ignoriert undDataGridTextColumn
resorts zum Standard-format. Wenn Sie stattdessen angebendd
alsStringFormat
es wie erwartet funktioniert.so Ihre endgültige Bindung wird so Aussehen (einschließlich TwoWay):
Beachten Sie jedoch bitte, dass dies verwirrend sein, im edit-Modus wie auch wenn Spalte zeigt Ihnen nur eine Zahl (der Tag) wird es eigentlich erwarten, dass Sie schreiben, in ein gültiges Datum, bevor es akzeptiert, dass die Eingabe und Formate es wieder, wie Sie Wunsch es zu. Sie können umgehen dies, indem Sie ein
DataGridTemplateColumn
statt und die AngabeCellTemplate
undCellEditingTemplate
.InformationsquelleAutor Maverik
Dieser ermöglicht das konfigurieren der Datum /Uhrzeit-format.
VB-Code
C# - Code
XAML-Code
InformationsquelleAutor BMan
Müssen Sie die
UICulture
wenn Ihre Anwendung startet, was es sein sollte. Dann wird es mit der richtigen Formatierung aus dem computer. Die XAML-Ressourcen standardmäßig immeren-US
Sie sehen.InformationsquelleAutor Andrew Truckle