[英]Combobox SelectedValue.ToString is always null WPF
我有一个DateTime
属性,我想在其中保存日期和时间。 因此,我在WPF
中创建了一个DatePicker
,可以在其中选择日期。 在它旁边,我放置了一个带有一些时间条目的组合Combobox
。
现在,我想将在combobox
选择的时间与DatePicker
的DateTime
结合起来,以便将默认值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);
}
StartTime和EndTime是我的组合框
我想加入我的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()
处始终为我提供null
如果有人知道另一种方法而不使用第三方工具包或类似的东西,请告诉我。 我必须使用本地WPF
东西(用于学校)
提前谢谢了
南瓜
运行类似的示例可以很好地获取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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.