我总是对DateTime
类型感到困惑。在我们的WPF程序中,我们有ViewModel公开的DateTime
属性,需要绑定到View中的Control / Controls。但显然因为DateTime
同时包含日期部分和时间部分,我们想要显示它们/让用户同时修改它们。所以我认为我们需要一个DatePicker
作为日期部分,一个TextBox
作为时间部分(使用格式字符串),但我想不出在XAML中定义这种控制/绑定的简单方法
使用“WPF DateTime Binding”进行Google搜索并没有给我很多引用(为什么大多数示例都显示了对DatePicker的绑定,当显然是显示时间的有效要求时)。
有人可以告诉我该怎么做吗?
答案 0 :(得分:1)
您可以使用Extended WPF Toolkit DateTimePicker控件;
您可以通过nuget获得此解决方案。然后只需绑定到DateTimePicker的value属性。
XAML:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="145*"></RowDefinition>
<RowDefinition Height="31*"></RowDefinition>
<RowDefinition Height="144*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<xctk:DateTimePicker Grid.Row="1" Value="{Binding Path=MyDateTime}" Grid.Column="1"/>
</Grid>
VB:
Imports System.ComponentModel
Class MainWindow : Implements INotifyPropertyChanged
Private _myDateTime As DateTime = "#28/04/2014 07:11:00 AM#"
Public Property MyDateTime As DateTime
Get
Return _myDateTime
End Get
Set(value As DateTime)
If _myDateTime <> value Then
_myDateTime = value
OnPropertyChanged("MyDateTime")
End If
End Set
End Property
Protected Sub OnPropertyChanged(ByVal PropertyName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(PropertyName))
End Sub
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub New()
InitializeComponent()
Me.DataContext = Me
End Sub
End Class