簡體   English   中英

組合框SelectedValue.ToString始終為null WPF

[英]Combobox SelectedValue.ToString is always null WPF

我有一個DateTime屬性,我想在其中保存日期和時間。 因此,我在WPF中創建了一個DatePicker ,可以在其中選擇日期。 在它旁邊,我放置了一個帶有一些時間條目的組合Combobox

1個

現在,我想將在combobox選擇的時間與DatePickerDateTime結合起來,以便將默認值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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM