diff --git a/Elwig/ViewModels/DeliveryAdminViewModel.cs b/Elwig/ViewModels/DeliveryAdminViewModel.cs index 7bb135a..ad8ea42 100644 --- a/Elwig/ViewModels/DeliveryAdminViewModel.cs +++ b/Elwig/ViewModels/DeliveryAdminViewModel.cs @@ -116,7 +116,11 @@ namespace Elwig.ViewModels { [ObservableProperty] private bool _isManualWeighing; [ObservableProperty] - private bool _isNetWeight; + private bool? _isNetWeightValue = false; + public bool IsNetWeight { + get => IsNetWeightValue ?? false; + set => IsNetWeightValue = value; + } [ObservableProperty] private WineOrigin? _wineOrigin; diff --git a/Elwig/Windows/AdministrationWindow.cs b/Elwig/Windows/AdministrationWindow.cs index 9532f50..5fe2dff 100644 --- a/Elwig/Windows/AdministrationWindow.cs +++ b/Elwig/Windows/AdministrationWindow.cs @@ -109,7 +109,7 @@ namespace Elwig.Windows { private void OnClosing(object? sender, CancelEventArgs evt) { if ((IsCreating || IsEditing) && HasChanged) { - var r = System.Windows.MessageBox.Show("Soll das Fenster wirklich geschlossen werden?", "Schließen bestätigen", + var r = MessageBox.Show("Soll das Fenster wirklich geschlossen werden?", "Schließen bestätigen", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); if (r != MessageBoxResult.Yes) { evt.Cancel = true; @@ -166,7 +166,7 @@ namespace Elwig.Windows { ControlUtils.SetInputInvalid(input); } else if (input is ListBox lb && lb.SelectedItem == null && lb.ItemsSource != null && lb.ItemsSource.Cast().Any()) { ControlUtils.SetInputInvalid(input); - } else if (input is CheckBox ckb && ckb.IsChecked != true) { + } else if (input is CheckBox ckb && ((ckb.IsThreeState && ckb.IsChecked == null) || (!ckb.IsThreeState && ckb.IsChecked != true))) { ControlUtils.SetInputInvalid(input); Valid[input] = false; } else if (input is RadioButton rb && rb.IsChecked != true) { @@ -402,20 +402,24 @@ namespace Elwig.Windows { protected bool InputLostFocus(TextBox input, ValidationResult res, string? msg = null) { if (DoShowWarningWindows && !res.IsValid && !IsClosing && (IsEditing || IsCreating)) - System.Windows.MessageBox.Show(res.ErrorContent.ToString(), msg ?? res.ErrorContent.ToString(), MessageBoxButton.OK, MessageBoxImage.Warning); + MessageBox.Show(res.ErrorContent.ToString(), msg ?? res.ErrorContent.ToString(), MessageBoxButton.OK, MessageBoxImage.Warning); return res.IsValid; } protected void CheckBox_Changed(object sender, RoutedEventArgs evt) { var input = (CheckBox)sender; - if (SenderIsRequired(input) && input.IsChecked != true) { + if (SenderIsRequired(input) && ((input.IsThreeState && input.IsChecked == null) || (!input.IsThreeState && input.IsChecked != true))) { + ValidateInput(input, false); ControlUtils.SetInputInvalid(input); - } else if (InputHasChanged(input)) { - ControlUtils.SetInputChanged(input); - } else if (InputIsNotDefault(input)) { - ControlUtils.SetInputNotDefault(input); } else { - ControlUtils.ClearInputState(input); + ValidateInput(input, true); + if (InputHasChanged(input)) { + ControlUtils.SetInputChanged(input); + } else if (InputIsNotDefault(input)) { + ControlUtils.SetInputNotDefault(input); + } else { + ControlUtils.ClearInputState(input); + } } UpdateButtons(); } @@ -423,13 +427,17 @@ namespace Elwig.Windows { protected void RadioButton_Changed(object sender, RoutedEventArgs evt) { var input = (RadioButton)sender; if (SenderIsRequired(input) && input.IsChecked != true) { + ValidateInput(input, false); ControlUtils.SetInputInvalid(input); - } else if (InputHasChanged(input)) { - ControlUtils.SetInputChanged(input); - } else if (InputIsNotDefault(input)) { - ControlUtils.SetInputNotDefault(input); } else { - ControlUtils.ClearInputState(input); + ValidateInput(input, true); + if (InputHasChanged(input)) { + ControlUtils.SetInputChanged(input); + } else if (InputIsNotDefault(input)) { + ControlUtils.SetInputNotDefault(input); + } else { + ControlUtils.ClearInputState(input); + } } UpdateButtons(); } diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index 8b48c41..69df874 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -468,10 +468,10 @@ VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,45,10,10" Grid.Column="0" Grid.ColumnSpan="2" Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> - + Checked="GerebeltGewogenInput_Changed" Unchecked="GerebeltGewogenInput_Changed" Indeterminate="GerebeltGewogenInput_Changed"/>