[英]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.