我很欣賞這是一箇舊帖子,但今天我發現了這個,並找到了另一種處理日期和時間綁定的方法。
我創建了一個名爲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