我很欣赏这是一个旧帖子,但今天我发现了这个,并找到了另一种处理日期和时间绑定的方法。
我创建了一个名为dateTime的部分类,其中4个属性为日期,1个为小时,另一个为分钟。然后返回一个完成日期的只读dateTime属性。
Partial Public Class dateTimeValue
Property Dt As Date
Property Hr As Integer
Property Mn As Integer
ReadOnly Property dateTime As Date
Get
Dim d = Dt
d = d.AddHours(d.Hour * -1).AddHours(Hr)
d = d.AddMinutes(d.Minute * -1).AddMinutes(Mn)
d = d.AddSeconds(d.Second * -1)
Return d
End Get
End Property
End Class
然后在XAML我使用了网格布局与绑定一个DateTimePicker和一对夫妇组合框的。
<UniformGrid Columns="2">
<TextBlock Text="Date"/>
<DatePicker SelectedDate="{Binding dateTime.Dt}"/>
<TextBlock Text="Time"/>
<WrapPanel>
<ComboBox SelectedValue="{Binding dateTime.Hr}" SelectedValuePath="Content">
<ComboBoxItem>00</ComboBoxItem>
<ComboBoxItem>01</ComboBoxItem>
<ComboBoxItem>02</ComboBoxItem>
.........
<ComboBoxItem>22</ComboBoxItem>
<ComboBoxItem>23</ComboBoxItem>
</ComboBox>
<TextBlock Text=":"/>
<ComboBox SelectedValue="{Binding dateTime.Mn}" SelectedValuePath="Content">
<ComboBoxItem>00</ComboBoxItem>
<ComboBoxItem>15</ComboBoxItem>
<ComboBoxItem>30</ComboBoxItem>
<ComboBoxItem>45</ComboBoxItem>
</ComboBox>
</WrapPanel>
<Button Click="saveTask" Content="Save Task"/>
</UniformGrid>
然后显示在说一个文本块正确的日期和时间,你可以使用
<TextBlock Text="{Binding dateTime.dateTime, StringFormat={}{0:dd MMM yyyy - HH:mm}}"/>
希望这可以帮助其他人了。
让我们来谈谈3:那么问题是我无法将它与实际的DateTime合并,因为这些小时和分钟是第一个DateTime的一部分!所以我需要将最近的DateTime提供给ConvertBack方法。 – 2010-05-21 08:20:29
是的,你是对的,这是不容易的。我删除了这个想法 – bitbonk 2010-05-21 08:22:10
是的..你知道..在我看来,如果没有MVVM就无法克服一些问题。 – 2010-05-21 08:43:39