2016-06-13 2 views
0

У меня есть свойство DateTime, где я хочу сохранить дату и время чего-то. Поэтому я сделал DatePicker в WPF, где я могу выбрать дату. Рядом с ним я положил Combobox с некоторыми записями времени.Combobox SelectedValue.ToString всегда null WPF

1

Теперь я хочу присоединиться к времени, которое я выбрал в combobox с DateTime в DatePicker так что значение по умолчанию из 00:00:00 заменяется на мое значение я выбрал в comboBox. Как мне это сделать?

Вот некоторые фрагменты кода. Я заполняю свои комбо коробки так:

for (int i = 0; i < 24; i++) 
     { 
      for (int j = 0; j < 2; j++) 
      { 
       string minute; 

       if (j == 0) 
       { 
        minute = "00"; 
       } 
       else 
       { 
        minute = "30"; 
       } 


       //view.cmbStartZeit.Items.Add(i.ToString() + ":" + j.ToString()); 
       //startZeit.Content = i.ToString() + ":" + minute; 
       //endZeit.Content = i.ToString() + ":" + minute; 

       StartTime.Items.Add(i.ToString("00") + ":" + minute); 
       EndTime.Items.Add(i.ToString("00") + ":" + minute); 
      } 

время_запуска и EndTime моего ComboBoxes

Я хочу присоединиться к моим DatePicker и времени в полях со списком. Я нашел образец кода, но он не работает.

((DateTime)view.StartDate.SelectedDate).Add(TimeSpan.FromMinutes(Convert.ToDouble((view.StartTime.SelectedValue.ToString()).Split(':')[0]))).Add(TimeSpan.FromHours(Convert.ToDouble((view.StartTime.SelectedValue.ToString()).Split(':')[1]))); 

StartDate мой DatePicker. Он всегда дает мне значение StartTime.SelectedValue.ToString()

Если кто-то знает другой способ сделать это, не используя сторонние комплекты или прочее, пожалуйста, скажите мне. Я должен использовать родной WPF материал (это в школе)

Большое спасибо заранее

B.Pumpkin

+0

Вы можете поделиться код фрагменты, которые вы используете, и ошибку, с которой вы столкнулись? –

ответ

1

Запуск подобный пример отлично подходит для получения StartTime.SelectedValue.ToString() работ.

Есть и другие проблемы, хотя:

DateTime.Add не является методом Mutating, а просто возвращает новый объект DateTime. Итак, прежде всего вам нужно установить новый DateTime на ваш объект StartDate. Также вы разбираете минуты и часы в обратном порядке (но есть лучший способ разобрать его, см. Ниже).

Вот что я сделал, чтобы заставить его работать:

var time = TimeSpan.Parse(startTime.SelectedValue.ToString()); 

startDate.SelectedDate = ((DateTime)startDate.SelectedDate).Add(time); 

Full (простой), рабочий пример: за

<StackPanel> 
      <DatePicker Name="startDate" /> 
      <ComboBox Name="startTime" SelectionChanged="StartTime_OnSelected" /> 
</StackPanel> 

Код:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     for (int i = 0; i < 24; i++) 
     { 
      for (int j = 0; j < 2; j++) 
      { 
       string minute; 

       if (j == 0) 
       { 
        minute = "00"; 
       } 
       else 
       { 
        minute = "30"; 
       } 


       //view.cmbStartZeit.Items.Add(i.ToString() + ":" + j.ToString()); 
       //startZeit.Content = i.ToString() + ":" + minute; 
       //endZeit.Content = i.ToString() + ":" + minute; 

       startTime.Items.Add(i.ToString("00") + ":" + minute); 
      } 
     } 
    } 

    private void StartTime_OnSelected(object sender, RoutedEventArgs e) 
    { 
     var time = TimeSpan.Parse(startTime.SelectedValue.ToString()); 

     // startDate.SelectedDate could be null, so do some checking before 
     startDate.SelectedDate = ((DateTime)startDate.SelectedDate).Add(time); 
    } 
} 
+0

Работал для меня :) спасибо! –

Смежные вопросы