2016-06-13 17 views
0

私はDateTimeプロパティを持っています。私は何かの日付と時間を保存したいのですが。したがって、私はDatePickerWPFに作成しました。ここで私は日付を選択できます。その隣に私はComboboxをいくつかの時間のエントリーと入れました。Combobox SelectedValue.ToStringは常にnull WPF

1

今私は00:00:00のデフォルト値は、私はcomboBoxで選択した私の値に置き換えられますように、私はDatePickerDateTimecomboboxで選択した時間に参加したいです。それ、どうやったら出来るの?

ここにいくつかのコードスニペットがあります。私はそのように私のコンボボックスを埋める:

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); 
      } 

のStartTimeと終了時間は、私のコンボボックスは、私はコンボボックスで私の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]))); 

StartDateDatePickerです。それはいつも私にnullを与えますStartTime.SelectedValue.ToString()

誰かがそれを行う別の方法を知っている場合は、サードパーティ製のキットやそのようなものを使用せずに教えてください。私はネイティブWPFものを使用する必要があります(それは学校のためです)事前に

感謝

B.Pumpkin

+0

はあなたには、いくつかのコードを共有することができますあなたが使用しているスニペットとあなたが直面したエラー? –

答えて

1

同様の例を実行すると、StartTime.SelectedValue.ToString()を取得するため正常に動作します。

他の問題ががあります。

DateTime.Addは、非変異の方法であり、そしてちょうど新しいDateTimeオブジェクトを返します。 まず、新しいDateTimeをStartDateオブジェクトに設定します。また、分と時間を逆の順序で解析しています(ただし、解析する方が良い、以下を参照)。ここで

は、私はそれを動作させるためにやったことです:

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

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

全(シンプル)、作業例:

<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

私のために働いた:)ありがとう! –