Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

WPF Uhrzeit Elemente oder DateTime-Picker

02.03.2019 (👁10866)


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