WPF Uhrzeit Elemente oder DateTime-Picker
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