WPF przycisk nie staje się nieaktywny, gdy nie wybiorę żadnej Daty

0

Witajcie! :)

mam sobie przycisk, który ma być nieaktywny, gdy w DatePicker nie ma żadnej wybranej Daty. Niestety nie działa mi to. Przycisk zawsze jest aktywny. Co robię nie tak?

<DatePicker Name="hDepartureDate" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="3" Background="#FFB4B4B4" SelectedDateFormat="Long" FirstDayOfWeek="Monday" SelectedDateChanged="hDepartureDate_SelectedDateChanged" />
        
<Button Name="hSetDepartureTime" Grid.Column="0" Grid.Row="4" Content="..." Click="hSetDepartureTime_Click" IsEnabled="{Binding Path=IsDateValid}"/>

Poniższa metoda wykonuje się w momentach wyboru jakiejś daty lub jej skasowania , sprawdzałem to.

private void hDepartureDate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            if (hDepartureDate.Text != "")
                IsDateValid = true;
            else
                IsDateValid = false;
        } 

Ta wartość jest powiązana z IsEnable przycisku.

private bool isDateValid { get; set; }
        public bool IsDateValid
        {
            get
            {
                return isDateValid;
            }
            private set
            {
                isDateValid = value;
                OnPropertyChanged("IsDateValid");
            }
        }
1

Nie wiem jak to zrobić na tych śmiesznych bindingach, ale przecież możesz zrobić „normalnie”:

        private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            hSetDepartureTime.IsEnabled = (sender as DatePicker).SelectedDate != null;
        }
0

isDateValid powinno być polem a nie właściwością :D
Na pewno ustawiłeś DataContext?
Poczytaj o metodach walidacji wpf, mogą się okazać lepsze

0

Mam takie pytanko, dałeś tam brejka w selectDateChanged i sprawdziłeś czy dla każdej zmiany wartości twojej daty IsDataValid przyjmuję wartość którą oczekujesz ?
To jest bardzo ważne. A tak poza tym to jak nie korzystasz z mvvm to przecież możesz zrobić tak jak Azerian pisze zamiast bindować to ( coś ala winformsy )

1 użytkowników online, w tym zalogowanych: 0, gości: 1