Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

WPF: Spalten Anzeige Format anpassen

 

Wie passt man die automatische Anzeige einer Datum-Spalte in einem WPF Datengrid an?

 

Problem:

Wenn ich wie hier dargestellt 4 Uhrzeit Spalten mit Binding in ein Datengrid einbinde, dann wird der Wert als 04:00:00 angezeigt.

 

Soll-Anzeige:

In Kurzem Zeitformat wie 04:00

 

 

 

Ist-Zustand:

Die Tabelle ist zurzeit so eingebunden in XAML

<DataGrid x:Name="ctlDataGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"

         AutoGenerateColumns="False"

         GridLinesVisibility="All"

         Background="#F0f0f0"

         ItemsSource="{Binding}" 

         SelectionMode="Single" 

         IsReadOnly="True" 

         MouseDoubleClick="ctlDataGrid_MouseDoubleClick"

          SelectionChanged="CtlDataGrid_SelectionChanged"

          HeadersVisibility="All"                  

          Grid.Row="1" 

         >

 

            <DataGrid.Columns>

                <DataGridTextColumn Header="ID" Binding="{Binding IDSchichmodell}" />

                <DataGridTextColumn Header="Kürzel" Binding="{Binding Kurz}" />

                <DataGridTextColumn Header="Bezeichnung" Binding="{Binding Schichtmodell}" />

                <DataGridTextColumn Header="von" Binding="{Binding Schicht_Beginn}" />

                <DataGridTextColumn Header="bis" Binding="{Binding Schicht_Ende}" />

                <DataGridTextColumn Header="Dauer" Binding="{Binding Schicht_Dauer}" />

                <DataGridTextColumn Header="Pause" Binding="{Binding Schicht_Pause}" />

                <DataGridTextColumn Header="Nr" Binding="{Binding SortierNr}" />

              

                <DataGridTextColumn Header="Farbe" > 

                <DataGridTextColumn.CellStyle>

                    <Style TargetType="DataGridCell">

                        <Setter Property="Background" Value="{Binding Farbe}" />

                    </Style>

                </DataGridTextColumn.CellStyle>

                </DataGridTextColumn>

 

            </DataGrid.Columns>

            

        </DataGrid>

 

 

Und die Daten werden direkt über eine Linq Datenabfrage angebunden

//< get_Data >

                var data = (from tbl in db.tblBase_Schichten

                            orderby tbl.IDSchicht ascending

                            select tbl).Take(1000);

                //</ get_Data >

 

                //--< @Loop: Rows >--

                foreach (var row in data)

                {

 

                    ctlDataGrid.Items.Add(row);

                }

                //--</ @Loop: Rows >--

 

 

 

Lösung:

Die Formatierung des Datums wird in den Binding Ausdruck gelegt

Für Zeit-Felder speziell muss man folgende Formatierung verwenden

StringFormat='hh\\:mm'

 

Im Datagrid einer TextColumn wird die Formatierung direkt hinter die Binding Anweisung geschrieben

<DataGridTextColumn Header="Schicht" Binding="{Binding Schichtmodell}" />

<DataGridTextColumn Header="von" Binding="{Binding Schicht_Beginn, StringFormat='hh\\:mm'}"  />

<DataGridTextColumn Header="bis" Binding="{Binding Schicht_Ende, StringFormat='hh\\:mm'}" />

<DataGridTextColumn Header="Dauer" Binding="{Binding Schicht_Dauer, StringFormat='hh\\:mm'}" />

<DataGridTextColumn Header="Pause" Binding="{Binding Schicht_Pause, StringFormat='hh\\:mm'}" />

 

Lösung mit kurzen Zeitformat

 

Mobile
»
WPF: SelectedItem aus DataGrid auslesen mit Anonyous Type auf Dyamic Type
»
WPF: Elemente zu breit, rand abgeschnitten
»
Gelöst: System.InvalidCastException HResult=0x80004002 SelectedItem SelectedValue
»
WPF Kurze Zeit in Grid Spalten anpassen. Anzeige Zeit Format
»
WPF: Combobox Selected Value ermitteln und zuweisen
»
WPF: Combobox füllen
»
WPF: Hintergrundfarbe einer Spalte an Daten binden
»
WPF Hintergrundfarbe einer Spalte ändern
»
WPF: Datum aus Datumsfeld Datepicker speichern
»
WPF Datagrid: Spalte wird nicht angezeigt

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de