繁体   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