오래된 게시물인데 감사합니다.하지만 오늘이 문제를 발견하고 날짜와 시간을 사용하여 바인딩을 처리하는 다른 방법을 발견했습니다.
날짜에 대해 하나씩, 시간에 대해 하나, 분에 대해 네 가지 속성으로 dateTime이라는 부분 클래스를 만들었습니다. 그런 다음 완성 된 날짜를 반환하는 읽기 전용 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}}"/>
희망을 사용할 수있는 TextBlock의 말에 정확한 날짜와 시간을 표시합니다.
3시에 대해 이야기 해 봅시다. 문제는 실제 DateTime과 병합 할 수 없다는 것입니다. 그 이유는 시간과 분이 첫 번째 DateTime의 일부이기 때문입니다! 따라서 최근 DateTime을 ConvertBack 메서드에 제공해야합니다. –
예, 네가 맞습니다. 나는 그 생각을 삭제했다. – bitbonk
네 .. 알 잖아요. MVVM 없이는 어떤 문제를 극복 할 수없는 것처럼 보입니다. –