我有DateTime
属性,我希望保存日期和时间。因此,我在DatePicker
中设置WPF
,我可以在其中选择日期。在它旁边我放了Combobox
一些时间条目。
现在,我想加入我在combobox
中使用DateTime
的{{1}}加入的时间,以便将DatePicker
的默认值替换为我的值我在00:00:00
中选择了。我怎么做?
这里有一些代码片段。我填写这样的组合框:
comboBox
StartTime和EndTime是我的ComboBoxes
我想加入我的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);
}
和时间在组合框中。我找到了一个代码示例,但它不起作用。
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()
内容(它适用于学校)
非常感谢提前
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);
}
}