Folgende WPF Anwendung zeigt, wie man eine Tageszeit in WPF anhand eines DateTime Pickers einstellen kann.
Mit einem DateTime Picker kann man nur die aktuelle Tageszeit auswählen, ohne das Datum verwenden zu müssen. Als Variable im Hintergrund wird allerdings eine DateTime Variable verwendet.
WPF selbst hat leider keinen DateTime Picker. Man kann sich einen DateTime Picker als UserControl selber erstellen oder schnell mal den Xceed DateTime-Picker einbauen
Am Beispiel vom kostenlosen XCeed Tools. Time Control
In der Xaml Frontend Seite muss xceed-Toolkit eingefügt werden im Kopfbereich der Code Seite
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" x:Class="Schichtplaner.Page_Base_Schichten" |
Die einzelnen xceed TimePicker werden dann wie hier als xctk:TimePicker eingefügt
<Label Content="Von" Grid.Row="3" Grid.Column="0"/> <xctk:TimePicker x:Name="tbxVon" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left" Width="99" />
<Label Content="Bis" Grid.Row="4" Grid.Column="0"/> <xctk:TimePicker x:Name="tbxBis" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" Width="99" />
<Label Content="Dauer" Grid.Row="5" Grid.Column="0"/> <xctk:TimePicker x:Name="tbxDauer" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Left" Width="99" />
<Label Content="Pause" Grid.Row="6" Grid.Column="0"/> <xctk:TimePicker x:Name="tbxPause" Grid.Row="6" Grid.Column="1" HorizontalAlignment="Left" Width="99" /> |
Timepicker in C#, WPF
TimePicker einstellen
Beim TimePicker werden Uhrzeiten von 0-24 eingestellt. Hierzu verwendet man ein DateTime Variable, bei der das Datum null bleibt und nur die Tageszeit-Uhr eingestellt wird.
In diesem Fall werden die DateTime-Werte aus der Datenbank entnommen. Dort sind die Datenwerte als SQL Date Felder deklariert.
DateTime dtSet = data.Schicht_Beginn ?? DateTime.Now; tbxVon.Value = dtSet; dtSet = data.Schicht_Ende ?? DateTime.Now; tbxBis.Value = dtSet; dtSet = data.Schicht_Dauer ?? DateTime.Now; tbxDauer.Value = dtSet; dtSet = data.Schicht_Pause ?? DateTime.Now; tbxPause.Value = dtSet; |
In der Datenbank als DateTime
SQL Syntax
CREATE TABLE [dbo].[tblBase_Schichten] ( [IDSchicht] INT IDENTITY (1, 1) NOT NULL, [Schicht] NVARCHAR (50) NULL, [Kurz] NVARCHAR (5) NULL, [Schicht_Beginn] DATETIME NULL, [Schicht_Ende] DATETIME NULL, [Schicht_Dauer] DATETIME NULL, [Schicht_Pause] DATETIME NULL, [SortierNr] INT NULL, [Farbe] NVARCHAR (9) NULL, [Textfarbe] NVARCHAR (9) NULL, [dtEdit] DATETIME NULL, [dtCreated] DATETIME NULL, PRIMARY KEY CLUSTERED ([IDSchicht] ASC)
|
Reset auf null : indem man das Element mit null zuweist
if (tbxVon.Value != null) { data.Schicht_Beginn = tbxVon.Value; } else { data.Schicht_Beginn = null; }; if (tbxBis.Value != null) { data.Schicht_Ende = tbxBis.Value; } else { data.Schicht_Ende = null; }; if (tbxDauer.Value != null) { data.Schicht_Dauer = tbxDauer.Value; } else { data.Schicht_Dauer = null; }; if (tbxPause.Value != null) { data.Schicht_Pause = tbxPause.Value; } else { data.Schicht_Pause = null; }; |
Zum Verwenden des kostenlosen DateTime-Pickers muss man über Nuget Packages das XCeet.Wpf.Toolkit installieren