Good evening. I am working on a mini programme that requires the user to choose date and time on the Calendar Date picker of WPF. The user then should click the check-in button. I wish to disable the check-in button if the user has not selected any value for both check-in date and check-out date.
Images of main application: User interface of the application
My code: The if statement only contains checkinDate as I wish to check if the code works before I code for checkoutDate. ToString() is used as I need to convert the Calendar Date Picker value into a string for other functions to work. I am using visual studio 2017, which seems to have a major difference from the previous version.
        DateTime cid = DateTime.Parse(checkinDate.Date.ToString());
        DateTime cod = DateTime.Parse(checkoutDate.Date.ToString());
        Stay s = new Stay(cid, cod);
        if (checkinDate is null)
        {
            checkInbtn.IsEnabled = false;
        }
The code is not working as the Check In button is still not disabled when the check-in and check-out date contains no value. The error message given whenever the check-in button is clicked is: System.FormatException: 'String was not recognized as a valid DateTime.'
I have conducted my research all around google and on stack overflow and has used the following method for trial and error but to no avail.
Code Tried:
if (checkinDate.GetValue == null)
if (checkinDate.Value == null)
if (checkinDate.Date == null)
if (checkinDate.Date.ToSting()== null)
if (checkinDate.ToString() == null)
if (checkinDate.SelectedDate == null) // Selected date was underlined. Error message:CalendarDatePicker does not contain a definition of 'SelectedDate'
I have also set the null to other condition such as '0' and "". But to no avail.
Source researched: Date time picker validations , Check if DatePicker value is null , String was not recognized as a valid DateTime " format dd/MM/yyyy" ,
The complete piece of code for your reference:
private void CheckInbtn_Click(object sender, RoutedEventArgs e)
    {
        List<HotelRoom> list1 = new List<HotelRoom>();
        string name = guest.Text;
        string no = passportNo.Text;
        DateTime cid = DateTime.Parse(checkinDate.Date.ToString());
        DateTime cod = DateTime.Parse(checkoutDate.Date.ToString());
        Stay s = new Stay(cid, cod);
        if (checkinDate is null)
        {
            checkInbtn.IsEnabled = false;
        }
        for (int i = 0; i < guestList.Count; i++)
        {
            if (name != guestList[i].Name || no != guestList[i].PpNumber)
            {
                Membership m = new Membership("Ordinary", 0);
                Guest g = new Guest(name, no, s, m, true);
                guestList.Add(g);
            }
            else
            {
                guestList[i].HotelStay = s;
            }
        }
        if (guest.Text.Trim().Length > 0 && passportNo.Text.Trim().Length > 0)
        {
            foreach (HotelRoom r in selectedRoomList)
            {
                list1.Add(r);
            }
            foreach (HotelRoom hotel in list1)
            {
                hotel.IsAvail = false;
                s.AddRoom(hotel);
                selectedRoomList.Remove(hotel);
            }
            statusTxt.Text = "Check in Successful";
            AvailableRoomListView.ItemsSource = null;
            SelectedRoomListView.ItemsSource = null;
        }
    } 
 
     
    